数据结构教材之外的排序算法分析
来源:互联网 发布:php安装 编辑:程序博客网 时间:2024/04/28 10:56
大多数据结构书中,排序这一章的内容基本上都是直接插入排序、折半插入排序、直接选择排序、起泡排序、堆排序、快速排序、归并排序、基数排序。这几种排序方法中,最好的算法的空间复杂度除了快速排序外都是O(1),平均时间复杂度最小为O(nlogn).
前几天看到下面几个有效的排序方法,粗略分析下其性能。
鸽巢排序
鸽巢排序的基本思想是:
假设我们要排序的数组为init_array,设其中最大元素为Max。额外分配一个长度为Max的int类型数组temp[Max],数组中元素初始都为0,算法开始循环地将temp中下标为init_array[i]处的元素置一个常数a(假设为1);然后从0开始扫描数组init_array,遇到temp中值为这个常数a的元素时,将其依次存入数组init_array中,此时init_array中存储的就是已排序的元素。
整个程序的实现如下所示:
这个算法的时间复杂度为O(Max),因为算法的第二次for循环中若把常数设置为1的话实际只执行1次,可用if(b[i]==1)代替。空间复杂度也为O(Max),因为另外开辟了Max的空间。
鸽巢排序算法的限制条件有两个:一是数组中存储的必须是int类型或者转换为int类型不丢失真实数据的数据类型;二是必须事先预测到数组中存储的最大元素,在程序运行过程中求得后因为不是const值,所以无法用int b[Max] = {0};来初始化数组b.
- 数据结构教材之外的排序算法分析
- 数据结构与算法分析之--->部分排序算法的实现
- 数据结构与算法分析-排序
- 数据结构各类排序算法分析
- 数据结构-排序: 各种排序算法全分析
- 数据结构-排序: 各种排序算法全分析
- 数据结构-排序: 各种排序算法全分析
- 《数据结构与算法分析》排序算法总结
- 排序算法(数据结构与算法分析)
- 数据结构与算法分析 --- 排序算法
- 常用的算法和数据结构分析(查找和排序)
- 数据结构课程设计---内部排序算法的性能分析
- 数据结构实验4(排序算法的实现及性能分析)
- 数据结构的排序算法总结与分析(完整代码)
- 数据结构与算法分析笔记与总结(java实现)--排序算法的分析
- 数据结构查找排序算法总结分析
- 数据结构与算法分析-插入排序
- 数据结构与算法分析 - 快速排序
- ORACLE的左、右连接测试
- Linux修改文件及文件夹权限(转)
- Failed to create the Java Virtual Machine
- FreeBSD的初步配置
- 区别Display.getDefault()与Display.getCurrent()
- 数据结构教材之外的排序算法分析
- TypeList 之应用 GenScatterHierarchy
- 征BF……
- 对话框的动态创建 转
- 动态实现正方形旋转
- 我的Mangento博客
- Mangento init process
- 我代朋友寻人,大家帮帮忙!
- Qlayout