直接插入排序算法

(从后往前找到合适位置插入)

基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。

例:

34,4,56,17,90,65 

第一轮:i=1;temp=4

34,34,56,17,90,65

4,34,56,17,90,65

第二轮:i=2;temp=56

4,34,56,17,90,65

第三轮:i=3;temp=17

4,34,  56,56,90,65

4,34,34,56,90,65

4,17,34,56,90,65

第四轮:i=4;temp=90

4,17,34,56,90,65

第五轮:i=5;temp=65

4,17,34,56,90,90

4,17,34,56,65,90

代码如下:

public static void main(String[] args) {
        int[] num= {34,4,56,17,90,65};
        //控制比较的轮数
        for(int i =1;i<num.length;i++) {
            int temp = num[i];//记录操作数
            int j =0;
            for(j=i-1;j>=0;j--) {
                if(num[j]>=temp) {
                    num[j+1]=num[j];
                }else {
                    break;
                }
                if(num[j+1]!=temp) {
                    num[j+1]=temp;
                }
            }
        }
        //输出结果
        for(int x :num) {
            System.out.println(x);
        }
        
    }