码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡、快速、归并排序

时间:2019-09-18 17:45:37      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:避免   就是   log   处理   hover   分治算法   算法   方式   位置   

一:冒泡排序:减治排序
二:快速排序:分治算法
步骤:
1.在整个待排序空间内找一个基准值
2.遍历整个待排序区间,将所有数据和基准值进行比较,最终达到
比基准值大的(可以包含等于的)在基准值的右边
比基准值小的(可以包含等于的)在基准值的左边
3.用同样的策略处理左右两个小的待排序区间,直到
a:小区间内没有数据了(size==0)
b:小区间已经有序(size==1)
聚焦在第一步,为了避免取最边上为基准值导致的,如果数据已经有序、逆序就是最坏情况
1)最边上
2)随机取
3)多数取中(三数取中)
第二步有四种方法:
1)左右往中间靠: a:hover b:挖坑
2)前后遍历 a:前后遍历 b:把和基准值相等的单独处理
如何计算时间复杂度:
1)partition的过程,时间复杂度为O(n)
2)确定做多少层partition:
可以把分治的过程看成一棵二叉树,其高度就是层数
二叉树的高度:O(log(n))-O(n))
如何计算空间复杂度:
1)确定递归方法的调用栈需要最多多少层:
需要二叉树的高度层,所以为O(log(n))-O(n)
三:归并排序(合并排序):
合并两个有序数组的过程
0.平均切分待排序区间,如果待排序的左右两个小区间已经有序,
则按照合并有序数组的方式,使最终区间有序
1.先找到中间位置,划分左右两个小区间,直到小区间的长度==1或<1
2.分治的思想,先排序左右两个小区间
3.合并有序数组

冒泡、快速、归并排序

标签:避免   就是   log   处理   hover   分治算法   算法   方式   位置   

原文地址:https://blog.51cto.com/14232274/2438964

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!