几个基础算法介绍和实现——插入排序
来源:互联网 发布:云计算 大数据 编辑:程序博客网 时间:2024/06/14 02:05
最简单的排序算法之一是插入排序
插入排序由N-1趟(pass)排序组成,对于P=1趟到p=N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态。
插入排序利用这样的事实:位置0到位置P-1上的元素都是已排序过的。
简单来说就是长度为N的序列,前P个元素有序,第P+1个到第N—1个元素为无序,则将第P+1个元素与前P个元素逐个比较,逆序交换,看上去就像往前P个有序序列的合适位置插入一个元素,直到所有无序元素都插入到有序中。
算法描述:
1. 从第一个元素开始,只有一个元素时认为是有序的
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
5. 将新元素插入到该位置后
6. 重复步骤 2~5
代码如下:
void Sort::insertSort(int (&a)[10], int n){ int i, position; int temp; for (position = 1; position < n; position++) { temp = a[position]; for (i = position; i > 0 && a[i - 1] > temp; i--) { a[i] = a[i - 1]; } a[i] = temp; }}int main(void){ Sort m_sort; int a[10] = { 34, 8, 64, 51, 32, 21, 99, 108, 54, 33 }; m_sort.insertSort(a,10); for (int i = 0; i < 10; i++) { cout << a[i] <<endl; } system("pause"); return EXIT_SUCCESS;}
运行结果:
总结:
1. 插入排序的平均时间复杂度是O(n2)
2. 插入排序为稳定排序
阅读全文
0 0
- 几个基础算法介绍和实现——插入排序
- 几个基础算法介绍和实现——选择排序
- 几个基础算法介绍和实现——冒泡排序
- 几个基础算法介绍和实现——希尔排序
- 几个基础算法介绍和实现——基本概念
- 算法基础之排序—插入排序
- 黑马程序员——java基础排序算法:选择排序、冒泡排序和插入排序
- 基础算法 —— 插入排序
- 算法基础1——插入排序
- 算法基础(一)——插入排序
- 基础算法——直接插入排序
- 基础算法——折半插入排序
- 算法基础——插入排序
- 算法基础1—插入排序
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- 插入排序算法——Java实现
- 算法—插入排序(Java实现)
- 基础排序算法(二)——插入排序
- 关注国情民情,从身边做起
- HTML基础--表单标签 05
- 拓扑排序
- X265(HEVC编码器)在VS2015下的编译和使用
- tensorflow64 《深度学习原理与TensorFlow实战》04 CNN看懂世界 01 alexnet_benchmark.py
- 几个基础算法介绍和实现——插入排序
- Oracle--sqlplus如何设置SQLPlus结果显示的宽度
- 1058: [ZJOI2007]报表统计
- 带头单链表的实现(嵌套类的实现)
- Java泛型详解,通俗易懂只需5分钟
- PHP魔术方法之__get()和__set()方法
- 为什么匿名内部类和局部内部类只能访问final变量
- MySQL5.7 group by新特性,报错1055
- (2) Shell 变量