java的插入排序

  • 作者:村长
  • 发布时间:2020-04-29 22:32
  • 分类:java
  • 标签: 热门推荐
package twoProject;
import java.util.Arrays;
public class into {
	public static void main(String[] args) {
		//插入排序
		int score[] = {55,66,33,77,89,69,34,62};
		
		//外层循环控制插入的次数
		//插入排序法的核心思想是:假定是一个有序序列,然后第一个值是一个有序序列,其余的值是无序序列
		/*
		 * 外层循环控制循环次数,假定第一个值是有序的,依次拿后面的每个值和这个假定序列值进行比较
		 * 上面的数组总长度为8,循环次数,应该为0到7(循环8次)
		 * 第一次循环时,假定第一个值是有序的,所以循环从i=1开始,依次比较后面的全部数,所以条件为:数组.length
		 * 当i=1时,
		 */
		for(int i=1;i<score.length;i++){
			//假定当前的值是一个有序序列
			int temp = score[i];
			//按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,
			//直至最后一个记录插入到有序序列中为止
			/*
			 * 内层循环控制的是:外层循环次数,每次的比较次数进行插入:
			 * 当i=1时,j=0,内层循环1次。temp = 66;score[0]=55,用第二个值和第一个值比较是否需要交换,需要就交换
			 * 当i=2时,j=1;循环2次。当j=2时,temp=score[2] = 33;temp<score[1]=66,score[1]和score[2]换位置。变成:55,33,66
			 * 当i=2时,j--后,j=0。当j=0时,temp==score[2] = 33;temp<score[0]=55,发现33小于55,score[1]和score[0]换位置。变成:33,55,66
			 *
			 * 从上面的分析知道,插入排序,是假设前面的排序都是正确,然后呢在内层循环再拆后续的值出来跟前面排序好的值进行比较大小,并插入得到一个新的排序。
			 */
			for(int j=i-1;j>=0;j--){
				// 用第一个值和后面的值比较,如果比它大就换位置
				if(temp < score[j]){
					score[j+1] = score[j];
					score[j] = temp;
				}
			}
		}
		System.out.println("排序后的结果:"+Arrays.toString(score));
	}
}


  • php程序员面试笔试宝典
琉忆编程库

手册下载

    暂无手册

编程资料

    暂无资料
TOP
加载中...