算法导论—排序之插入排序
2014-05-12 20:24
225 查看
void insertion_sort(vector<int> &num){ for(int i = 1; i < num.size(); i++){ int j = i-1; int val = num[i]; while(j>=0 && num[j] >= val){ num[j+1] = num[j]; j--; } num[j+1] = val; } }
每次迭代时,将num[i] 作为key值,且前子数组[0,i-1] 构成已排好序,每次与左边的数比较,未满足条件,则进行右移
//降序 void insertion_sort(vector<int> &num){ for(int i = 1; i < num.size(); i++){ int j = i-1; int val = num[i]; while(j>=0 && num[j] < val){ num[j+1] = num[j]; j--; } num[j+1] = val; } }
效率分析:
最优情况:
原数列已排好序,即不进行while循环,效率为 n
最差情况:
原数列为逆序,则每次迭代要进行i-1次循环,则效率为 n方
相关文章推荐
- 算法导论-排序(一)-插入排序、归并排序
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 算法导论-插入排序,归并排序,快速排序总结
- 算法导论—排序—插入排序
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- 算法导论:快速排序和插入排序
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 排序算法之直接插入排序、二分插入排序和希尔排序
- 算法导论 - 归并排序的 C 语言实现
- 复习一下很古老的排序方法,插入排序
- 《算法导论》读书笔记--第二章 2.1 插入排序
- 算法导论笔记1——插入排序
- 算法导论第二章《插入排序》
- 冒泡排序,插入排序,快速排序,归并排序,堆排序,选择排序,希尔排序
- 算法导论实验:第二章插入排序 P10
- 插入排序(直接插入排序--折半插入排序--谢尔排序)
- Java选择排序,插入排序,快速排序
- 第一节:《算法导论》——插入排序
- 《算法导论》 8.2 计算排序
- 数据结构-插入排序-直接插入排序