直接插入排序学习

来源:互联网 发布:13.3英寸笔记本知乎 编辑:程序博客网 时间:2024/04/27 08:30

直接插入排序:

1、从未排序的第一个元素开始,和前一个已排好序的元素相比较,如果小于前一个元素就交换位置,并继续与前一个元素比较,大于则跳出当前这一层的循环,这样当前元素与原来已排好序的元素,组成一个新的已经排好序的序列;(原数组包含(0~i)已排好序的序列与(i~lenght-1)未排好序的序列),(第一个元素可以看成是已排好序的序列,从第二个元素起算第一个未排好序的序列首元素);

2、循环重复上述操作,直到数组全都排好序;

代码如下:

public class InsertionSort {
    private static int num = 0;//循环次数
    
    public int[] sort(int[] forSort){
        for(int i=1; i<forSort.length; i++){
            for(int j=i;j>0;j--){
                num++;
                if(forSort[j]<forSort[j-1]){
                    int temp = forSort[j-1];
                    forSort[j-1] = forSort[j];
                    forSort[j] = temp;
                }else{
                    break;
                }
            }
            System.out.println("分次结果:"+Arrays.toString(forSort)+",num="+num);
        }
        return forSort;
    }
    
    public static void main(String[] args) {
        int[] array = {2,5,6,8,5,4,6,9,4,9};
        InsertionSort insertSort = new InsertionSort();
        array = insertSort.sort(array);
        System.out.println("最终结果:"+Arrays.toString(array)+",num="+num);
    }
}

执行结果如下:

分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=1
分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=2
分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=3
分次结果:[2, 5, 5, 6, 8, 4, 6, 9, 4, 9],num=6
分次结果:[2, 4, 5, 5, 6, 8, 6, 9, 4, 9],num=11
分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=13
分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=14
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=21
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22
最终结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22


0 0
原创粉丝点击