算法之插入排序——直接插入排序
2016-12-31 18:17
330 查看
我们今天来说一下插入排序的直接插入排序。
直接插入排序是一种最简单的插入排序。它的基本思想是一次将每个记录插入到一个已排好序的有序表中去,得到一个新的有序表。
直接插入排序的过程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/446c2c0c4200ba4bbadc679e254f990a)
他的算法如下:
void InsertSort(SqList &L){
//对顺序表L进行直接插入排序
for (i=2;i<=L.length;i++){ //从第2个元素起进行插入
L[0]=L[i]; //第i个元素复制为岗哨
j=i-1; //j为岗哨前元素个数,即岗哨与之比较的个数
while (L[0].key<L[j].key) //第j个元素与岗哨进行比较,至值不大于岗哨时
{ //前i-1个数都是从小到大的有序序列,所以只要当前比较的数比岗哨大,就把这个数后移一位
L[j+1]=L[j];
j--;
}
L[j+1]=L[0]; //将第i个记录插入到序列中
}
if()
}直接插入排序是一种稳定的算法,他的空间复杂度为O(1),平均和最坏情况的时间复杂度为O(N2),最好情况是O(N)。
直接插入排序是一种最简单的插入排序。它的基本思想是一次将每个记录插入到一个已排好序的有序表中去,得到一个新的有序表。
直接插入排序的过程:
他的算法如下:
void InsertSort(SqList &L){
//对顺序表L进行直接插入排序
for (i=2;i<=L.length;i++){ //从第2个元素起进行插入
L[0]=L[i]; //第i个元素复制为岗哨
j=i-1; //j为岗哨前元素个数,即岗哨与之比较的个数
while (L[0].key<L[j].key) //第j个元素与岗哨进行比较,至值不大于岗哨时
{ //前i-1个数都是从小到大的有序序列,所以只要当前比较的数比岗哨大,就把这个数后移一位
L[j+1]=L[j];
j--;
}
L[j+1]=L[0]; //将第i个记录插入到序列中
}
if()
}直接插入排序是一种稳定的算法,他的空间复杂度为O(1),平均和最坏情况的时间复杂度为O(N2),最好情况是O(N)。
相关文章推荐
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 【算法拾遗(java描述)】--- 插入排序(直接插入排序、希尔排序)
- 简单排序算法:直接插入排序(插入排序)
- 算法---插入排序(直接插入排序)
- 数据结构-排序算法之插入排序(直接插入,二分插入,希尔,表插入)
- 算法-排序-插入排序(直接插入和希尔排序)
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 算法与数据结构(四)--插入排序(直接插入排序)
- 【算法拾遗(java描写叙述)】--- 插入排序(直接插入排序、希尔排序)
- 直接插入排序:改进算法---折半插入排序
- 算法周记(一)直接插入排序
- 插入排序算法--直接插入算法,折半排序算法,希尔排序算法(C#实现)
- python算法实践1-直接插入排序
- 数据结构-排序: 插入排序(直接插入排序法)
- 数据结构-排序: 插入排序(直接插入排序法)
- 插入排序:直接插入排序和希尔排序
- 直接插入排序:改进算法---2路插入排序
- 白话经典算法系列之二 直接插入排序的三种实现
- 常用排序算法之插入排序 ( 直接插入排序、希尔排序 )
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)