冒泡排序、直接插入排序
2015-08-20 21:49
260 查看
冒泡排序
冒泡排序改进版
直接插入排序
总结:
1.交换2个相邻元素正好消去一个逆序对。
2.任意N个不同元素组成的序列平均具有N(N-1)/4个逆序对。
3.任何仅以交换相邻两个元素来排序的算法,其时间复杂度为O(N2)
template<typename T> void Bubble_Sort(T arrary[], int N) { for (int i = N-1; i >=0; i--) { for (int j =0; j < i; j++) { if (arrary[j] > arrary[j + 1]) { swap(arrary[j], arrary[j+1]); } } } }
冒泡排序改进版
template<typename T> void Bubble_Sort_Optimize(T arrary[], int N) { bool flag = true; for (int i = N - 1; i >= 0; i--) { for (int j = 0; j < i; j++) { if (arrary[j] > arrary[j + 1]) { swap(arrary[j], arrary[j+1]); flag = false; } } if (flag == true) break; } }
直接插入排序
template<typename T> void Insertion_Sort(T arrary[], int N) { for (int i = 1; i < N; i++) { int j = i; T tmp = arrary[i]; while (tmp < arrary[j - 1]&&j>0) { arrary[j] = arrary[j - 1]; j--; } arrary[j] = tmp; } }
总结:
1.交换2个相邻元素正好消去一个逆序对。
2.任意N个不同元素组成的序列平均具有N(N-1)/4个逆序对。
3.任何仅以交换相邻两个元素来排序的算法,其时间复杂度为O(N2)
相关文章推荐
- session和cookie区别
- 微信网页调试的各种方法
- MyBatis执行动态sql及存储过程
- LeetCode——Add Digits
- loadView、viewDidLoad及viewDidUnload的关系
- vs中由低版本转换为高版本出现如下错误的解决办法
- 【一些事晚报】俞敏洪:因余佳文的一句话让我放弃了投资他
- 图像处理时一些卷积核子函数的生成
- 遍历数组按学号找人,若找到则输出信息,否则输出"查无此人"
- 【转】angularjs指令中的compile与link函数详解
- 2个无线路由器怎么连接
- Regex 手机号 座机 正则表达式
- poj 1840 哈希
- 逗比学习开始树莓派章
- hdoj2680 Choose the best route
- 分布式数据库一致性解决初步
- delphi开发学习五:QuickReoprt报表控件使用实例
- 从背后知道C语言程序是怎么运行的
- 演讲的注意事项
- 演讲的注意事项