排序问题总结
2013-10-27 13:11
357 查看
一、插入排序
1、直接插入
主要讲的是直接插入排序的方法:思路是:
将第I个记录插入到已经有序的I-1个记录中(其中I>1,因为当I=1时记录为一个有序记录,不用进行插入)
具体步骤:
给出待排序记录{45,38,66,90,88,10,25}
第一回合:I=2(值38插入到45中)则有序数列为:38,45
第二回合:I=3(值66插入到有序数列中)则有:38,45,66
第三回合:I=4(值90插入到有序数列中)则有:38,45,66,90
第四回合:I=5(值88插入到有序数列中)则有:38,45,66,88,,90
第五回合:I=6(值10插入到有序数列中)则有:10,38,45,66,88,90
第六回合:I=7(值25插入到有序数列中)则有:10,25,,38,45,66,88,90
二、交换排序
主要讲了冒泡排序和快速排序1、冒泡排序
思路是:从第一个记录开始,第I个和I+1个记录进行比较,若I>I+1则交换两个值
具体步骤:
给出待排序记录{45,38,66,90,88,10,25}
第一回合:进行交换的两个值为45,38 需交换得:38,45
第二回合,进行交换的两个值为45,66 需交换得:45,66
第三回合,进行交换的两个值为66,90 需交换得:66,90
第四回合,进行交换的两个值为90,88 需交换得:88,90
第五回合,进行交换的两个值为90,10 需交换得:10,90
第六回合,进行交换的两个值为90,25 需交换得:25,90
第一趟排序结束:顺序为:38,45,66,88,10,25,90
第二趟的回合与第一趟类似,
得出排序结果是:38,45,66,10,25,88,90
第三趟排序结果:38,45,10,25,66,88,90
第四趟排序结果:38,10,25,45,66,88,90
第五趟排序结果:10,25,38,45,66,88,90
结束
2、快速排序
思路是:
是冒泡排序的优化,到现在为止还不知道该如何用语言来描述这个过程
具体步骤:
给出待排序记录{45,38,66,90,88,10,25}
取出45作为初始比较的数据
则有:
第一回合:25,38,66,90,88,10,25
第二回合:25,38,66,90,88,10,66
第三回合:25,38,10,90,88,10,66
第四回合:25,38,10,90,88,90,66,
第五回合:25,38,10,88,88,90,66
此时第四位与第五位相同
则将45放到第四位
第一趟排序结束有:25,38,10,45,88,90,66
然后分别对25,38,10和88,90,66进行快速排序详细步骤有:
对于25,38,10
第一回合有:10,38,10
第二回合有:10,38,38
得出:10,25,38
对于88,90,66
第一回合有:66,90,66
第二回合有:66,90,90
得出:66,88,90
所以最终结果有:10,25,38,45,66,88,90
三、选择排序
基本思想是:每一次在n-i+1个记录中选取键值最小的记录作为有序序列的第i个记录1、直接选择
思路是:第i次选择操作中,通过n-i次比较,从记录中获得最小值,并和第i个记录进行交换
具体实现步骤:
给出待排序记录{45,38,66,90,88,10,25}
注:(蓝色字体为有序部分)
第一趟排序结果:10,38,66,90,88,45,25
第二趟排序结果:10,25,66,90,88,45,38
第三趟排序结果:10,25,38,90,88,45,66
第四趟排序结果:10,25,38,45,88,90,66
第五趟排序结果:10,25,38,45,66,90,88
第六趟排序结果:10,25,38,45,66,88,90
所以最终结果是:10,25,38,45,66,88,90
2、堆排序
思想是:借用二叉树,任一结点的值都不大(小)于它的两个孩子的值
具体实现:
第一步:将给定数值建成一颗完全二叉树
第二步:从n/2开始,把这些元素以上的结点,进行筛选成堆
筛选成堆的具体实现是:
如果其父结点的大于任一子结点,则进行交换。使得父节点小于任一子节点。
介绍了这么多排序的实现方法,每次看到概念都是晕乎乎的,还是自己实现起来比较清晰。
相关文章推荐
- 排序 第K大等问题总结
- c++排序问题(总结)
- 算法小白总结(四)-----分治法之排序问题
- 排序问题的总结
- Sql常见问题总结二(Sql语句怎么样查询IP,游标去重复,各种函数使用,各种取时间格式,字符串精确排序,超时锁问题)
- 总结在前端排序中遇到的问题
- Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
- c++排序问题(总结)
- Java集合框架总结(3)——TreeSet类的排序问题
- Java集合框架总结(3)——TreeSet类的排序问题
- Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
- 总结TreeSet排序问题
- Java HashMap和TreeMap的排序问题总结
- Java集合框架总结(3)—— TreeSet类的排序问题
- C++排序问题总结
- 排序问题专题总结
- 排序问题总结
- Java集合框架总结:TreeSet类的排序问题
- 排序问题思考与总结
- 总结排序(或部分排序)矩阵上的搜索问题