插入排序介绍

一、什么是插入排序

        插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,那插入排序是如何借助上面提到的思想来实现排序的呢?首先我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素,然后在未排序区间中依次取出元素并插入到已排序区间的合适位置,并保证已排序区间一直是有序。重复这个步骤直到未排序区间元素为空,算法结束。

二、代码实现

1、代码实现1

public void sort(int[] ints){

    //遍历数组中的元素
    for(int i=1 ; i<ints.length ; i++){

         //元素小于前面的元素

         if(ints[i]<ints[i-1]){

            //遍历i元素前面的所有元素,从索引0开始

            for(int j=0;j<i; j++){

                //如果索引为j的元素小于索引为i的元素

                if(ints[i]<ints[j]){

                    int temp = ints[i];

                    //将索引为j到索引i之间的元素向后移动

                    for(int k=(i-1);k>=j;k--){

                        ints[k+1] = ints[k];

                    }

                    //将索引为j的元素赋值为temp

                    ints[j] = temp;

                }

            }

        }

    }

}

2、代码实现2

public void sort(int[] ints){

        for(int i=1; i<ints.length ; i++){

                int temp = ints[i]; 

                int j = i-1; 

                //如果j大于temp 就一直向后移动

                while(j>0&&ints[j]>temp){ 

                        ints[j+1] = ints[j];      

                        j--; 

                }    

                //最后插入到合适的位置

                ints[j+1] = temp;

      }        

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,829评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,305评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,357评论 0 2
  • 文/糊里糊涂妈 如果你觉得生活没意思,大概是你过得太没有刺激。比如朝九晚五,比如吃饭睡觉打豆豆…… 2个月前,我打...
    糊涂少女心阅读 2,493评论 12 17
  • 上周五大宝上好钢琴课跟小宝在车上等,老公下车去接,所以上课的注意点等都是老公转答的,他没说的我也不清楚。 昨...
    晴冰阅读 1,220评论 0 0

友情链接更多精彩内容