几个基础算法介绍和实现——插入排序
2017-07-02 22:46
363 查看
最简单的排序算法之一是插入排序
插入排序由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. 插入排序为稳定排序
相关文章推荐
- 几个基础算法介绍和实现——基本概念
- 几个基础算法介绍和实现——冒泡排序
- 几个基础算法介绍和实现——希尔排序
- 几个基础算法介绍和实现——选择排序
- 小王的尴尬日常(二)---Openssl 实现国密算法(基础介绍和产生秘钥对)
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- DSP上实现视频算法的几个基础
- DSP上实现视频算法的几个基础
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- python实现基础排序算法之(插入排序)
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- 关于递归的几个算法实现
- STL 中几个简单的数值算法实现
- 算法基础 几个常见的比较排序
- 2011-02-25 CLRS Chapter22 Elementary Graph Algorithms 图的几个基础算法
- CRC算法原理及C语言实现(介绍了3种方法)
- 常见基础算法大集合(C语言实现)
- 复习:支持向量机的理论基础—学习算法的实现方法
- 几个简单数论的算法的实现