常用算法之(插入排序)
2016-04-14 10:26
260 查看
什么叫插入排序?
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。实现插入的基本思想是什么?
每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。实现步骤
找到插入位置将插入位置上的元素向后移。
将元素放入插入位置。
代码实现
void Insertsort (int a[], int n) //由小到大的排序 { int i, j, k; for (i = 1; i < n; i++) // 外侧循环实现插入的个数 { // 为a[i]在'a[0]....a[i-1]'有序区间中找一个合适的位置 for (j = i - 1; j >= 0; j--) // 从最大的元素开始比较。 if (a[j] < a[i]) break; //插入位置为a[j] if (j != i - 1) //将比a[i]大的数据向后移 { int temp = a[i]; for (k = i - 1; k > j; k--) /*有序区最后一个元素移到a[i]位置 以此类推*/ a[k + 1] = a[k]; a[k + 1] = temp; //或者写为a[j] = temp 将a[i]放到正确位置上 } } }
时间复杂度为(n2)。
相关文章推荐
- IEngineEditor与IWorkspaceEdit,以及相关的事件监听
- 分析oracle索引空间使用情况,以及索引是否须要重建
- JAVA利用enum结合testng做数据驱动示例
- android中c文件log做宏打印
- Mina工作原理分析
- 泛型
- Android关于OOM的解决方案
- RHCS集群安装部署
- iOS开发中tableView的分割线的处理问题
- 机器学习笔记_02单变量线性回归
- gevent
- 从JCL向PROGRAM传递参数
- Nginx配置文件详细说明
- Android 滑动(一)窗口坐标系和触摸控件——MotionEvent
- gradle入门
- Linux开机启动,设置rc.local失效解决方案
- ZZULIOJ-1961 斗破苍穹(马拉车算法)
- Block的基本使用
- wince中BIB文件的详细介绍
- apache配置文件:http.conf配置详解