排序之一:插入排序

  • 介绍
    插入排序法是将数组中的元素,逐一与已排序的数据作比较,再将该数组元素插入适当的位置。
  • 演示
    代码如下:
private static void insertSort() {
    int data[] = {6, 4, 8, 1, 3, 7, 2, 9, 5};
    int i, j, tmp;
    for (i = 1; i < data.length; i++) {
        tmp = data[i];
        j = i - 1;
        while (j >= 0 && tmp < data[j]) {
            data[j + 1] = data[j];
            j--;
        }
        data[j + 1] = tmp;
    }
}

演示结果:

  • 分析
  1. 最坏及平均情况需比较n(n-1)/2次;时间复杂度为O(n²),最好情况时间复杂度为O(n);
  2. 是稳定排序法;
  3. 只需一个额外的空间,所以空间复杂度为最佳;
  4. 此排序法适用于大部分数据已经过排序或已排序数据库新增数据后进行排序的情况;
  5. 插入排序法会造成数据的大量搬移,所以建议在链表上使用。

其他排序:选择排序冒泡排序希尔排序快速排序基数排序

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

推荐阅读更多精彩内容

  • 查找和排序都是程序设计中经常用到的算法。查找相对而言较为简单,不外乎顺序查找、二分查找、哈希表查找和二叉排序树查找...
    eagleRock阅读 5,632评论 0 14
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,288评论 0 2
  • 读完一本书后,我对自己陌生了;一个梦醒来后,我发现我的青春被我自己圈养了。 也许,同很多异乡人一样,在迷茫的时候会...
    MoMo_LP阅读 683评论 0 0