首页 > 学院 > 开发设计 > 正文

排序算法(5)——插入排序

2019-11-06 06:43:01
字体:
来源:转载
供稿:网友

[

1、插入排序的思想

这里写图片描述 这里写图片描述 这里写图片描述

2、插入排序的实现

void insert_sort(int *a,int n){ int i,j,key; for(i=1;i<n;i++)//控制需要插入的元素 { key=a[i]; //key为要插入的元素 for(j=i;j>0 && a[j-1]>key;j--) //查找要插入的位置,循环结束,则找到插入位置 a[j] = a[j-1]; //移动元素的位置.供要插入元素使用 a[j] = key; //插入需要插入的元素 }}

2、插入排序的性能

1)、时间复杂度 最差时间复杂度为 O(n^2)。当数据是逆序的,比较次数和交换次数都是1+2+3+…i+…(n-1),即n*(n-1)/2。 最好时间复杂度是O(n)。当数据是已经排好序的,这时内层的for检测总是判定不成立的。 平均时间复杂度为 O(n^2)。因为平均时间复杂度接近于最差时间复杂度。

2)、稳定性 插入排序是稳定的排序算法。因为它是从右往左找合适的(不大于它)位置,再进行插入,所以即便有两个相等的元素,经过排序,前后还关系依旧维持。

和其它层算法的比较: 插入排序和冒泡排序都是稳定的排序。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表