简单排序之插入排序

  排序历来是每个程序猿都需要面对的问题,而排序算法也不计其数,当然大家接触最熟悉的冒泡排序(奇偶交换排序是冒泡排序的改进版,是一种并行处理排序的思想,这个可以值得探讨一下)了,所以就不赘述了,因为想记录一下希尔排序(插入排序的改进版),所以这里先简单描述一下插入排序。

  思路:插入排序是指将需要排序的数据分为两组,假设其中一组数据是排序完成的,(初始时,默认第一个数据是已经排序的,后面的数据是未排序的)另外一组数据是未排序的,然后依次循环未排序的数据插入到前面已排序的数据,直到未排序的数据为0时,则代表所有的数据已经排序完成。

  思路理清:两次循环,其一,循环所有数据,其二,每次比较插入的数据与已排序的数据(已经排序的数据会越来越多)对比和交换位置。

  public static void insertSort(int [] arr){
        int i,j,key;
        for ( i = 1; i <arr.length ; i++) {//从第二个数开始选取插入
            key=arr[i];//每次循环确定需要插入的值
            j=i-1;//和key比较的值的索引
            while(j>=0&&arr[j]>key){
                arr[j+1]=arr[j];//升序处理。只要比key值大,放到后面一位
                j--;//往前递进
            }
            arr[j+1]=key;//最终把key放到arr[j]的位置
        }
    }

 

posted @ 2020-05-15 22:07  [傾盡伊人]  阅读(336)  评论(0编辑  收藏  举报