排序算法系列之插入排序
2015-06-24 17:47
155 查看
思想:1. 从第一个元素开始,认为该元素已经是排好序的。
2. 取下一个元素,在已经排好序的元素序列中从后向前扫描。
3. 如果已经排好序的序列中元素大于新元素,则将该元素往右移动一个位置。
4. 重复步骤3,直到已排好序的元素小于或等于新元素。
5. 在当前位置插入新元素。
6. 重复步骤2。
程序:
分析:
稳定性:插入排序在两数相等的情况下不交换位置,所以是稳定的。
时间复杂度:最差时间复杂度O(n²),最优时间复杂度O(n),平均时间复杂度O(n²)
辅助空间复杂度 :O(1) ,一个临时变量
2. 取下一个元素,在已经排好序的元素序列中从后向前扫描。
3. 如果已经排好序的序列中元素大于新元素,则将该元素往右移动一个位置。
4. 重复步骤3,直到已排好序的元素小于或等于新元素。
5. 在当前位置插入新元素。
6. 重复步骤2。
程序:
template<classT> void InsertSort(T *x,constintN) { for(inti = 1; i<N; i++) { Ttemp = x[i]; intj; for(j= i-1; j>=0 && temp<x[j];j--) { x[j+1]= x[j]; } x[j+1]= temp; } }
分析:
稳定性:插入排序在两数相等的情况下不交换位置,所以是稳定的。
时间复杂度:最差时间复杂度O(n²),最优时间复杂度O(n),平均时间复杂度O(n²)
辅助空间复杂度 :O(1) ,一个临时变量
相关文章推荐
- Linux内核中内存相关的操作函数-1
- linux下如何修改进程优先级
- 用Java实现的一个本地文件浏览器
- Java发送Email
- Android详细解释键盘和鼠标事件
- win7(64位)php5.5-Apache2.4-mysql5.6环境安装
- jQuery 中bind(),live(),delegate(),on() 区别
- js实现仿阿里巴巴城市选择框效果实例
- Java Web 开发
- 当公司面临不容忽视的问题时
- jquery 获取父窗口的元素
- Android之ExpandableListView的属性(Group不展开)
- 通过批处理文件进行系统垃圾的清理
- swift 2特性记录
- 图形学-基础数学
- [SoapUI] 如何让某个步骤的Assertion失败之后继续执行后面的步骤
- IOS项目之分层MVVM
- 列表树的用法。
- centos怎么安装stardict词典
- 如何去做UI适配