【排序】插入排序算法

1.直接插入排序(Straight Insert Sort)

将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增加1的有序表。即:先将第一个记录看成有序表,然后从第二个记录逐一进行插入,直至整个序列有序为止。

  • 直接插入排序示例:

第一排为初始表,斜体加粗记录为有序表,有序表后加黑记录为待插入记录。

外层循环
i = 1 23 15 30 1 27 16 54 56 28 10
i = 2 15 23 30 1 27 16 54 56 28 10
i = 3 15 23 30 1 27 16 54 56 28 10
i = 4 1 15 23 30 27 16 54 56 28 10
i = 5 1 15 23 27 30 16 54 56 28 10
i = 6 1 15 16 23 27 30 54 56 28 10
i = 7 1 15 16 23 27 30 54 56 28 10
i = 8 1 15 16 23 27 30 54 56 28 10
i = 9 1 15 16 23 27 28 30 54 56 10
i = 10 1 10 15 16 23 27 28 30 54 56
  • 直接插入排序代码示例:
    private static void StraightInsertSort(int a[], int n){
        for (int i = 1; i < n; i++)
        {
            int tmp = a[i];
            int j = i - 1;
            while(j >= 0)
            {
                if (a[j] > tmp)
                {
                    a[j+1] = a[j];
                    a[j] = tmp;
                    j--;
                }
                else break;
            }
        }
    }
  • 效率
    时间复杂度为O(n^2)
    其他插入排序有二分插入排序、2-路插入排序。*

2.希尔排序(Shell's Sort)

待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,224评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,397评论 0 1
  • ​童华早上早早的就出了门,他路过早餐摊点要了两笼包子带走,到学校的时候班门还是像昨天一样锁得紧紧的,他只好靠着墙吃...
    小歌阅读 282评论 0 3