快排的方法与代码
来源:互联网 发布:免费淘宝客公众号系统 编辑:程序博客网 时间:2024/06/10 04:50
博主在写快排之前,写好了冒泡,选择,插入,觉得他们三个都属于那种很直观,操作很简单的排序,但是复杂度都很大,计算机里面,越是方法简单,复杂度就越是高,所以就看了看快排,我觉得,快排里面最麻烦的就是怎么理解它的思想,其实它的代码很少,比插入排序还要少一些,但是理解难度大一些,因为它的里面有两个递归,凡是有递归的地方一般都好麻烦,但是借助图像大家也还是可以试着理解,理解不了就先记住代码,之后多用几遍就好了。
快速排序:一种划分交换排序。它采用了一种分治的策略
1.先从数列中取出一个数(第一个数)作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
就是这么简单的两个两个步骤,然后一直找下去,直到各区间只有一个数(第一个数的的左边一定比它小,第二个数的右边一定比它大)。
这是第一次,也就是为开始的第一个数找好了自己的位置,然后再从两边开始,重复上面的操作,直到剩余一个数。
代码实现:
void quickSort(int a[], int left, int right){ int i = left; int j = right; int temp = a[left]; if(left >= right) { return; } while(i != j) { while(i < j && a[j] >= temp) { j --; } a[i] = a[j]; while(i < j && a[i] <= temp) { i ++; } a[j] = a[i]; } a[i] = temp; quickSort(a, left, j - 1); quickSort(a, i + 1, right);}
具体代码就是这样的,网上说这是分治法,我觉得也是这样,他可以通过递归实现把一个数组变成两个数组,再变成更多个。
1 0
- 快排的方法与代码
- 快排方法代码记录
- 基2快排原理与代码
- 基2快排原理与代码
- 快排代码
- 快排代码 《数据结构》
- 快排代码
- 快排代码示例
- Haskell快排代码
- 快排代码示例
- 快速排序 改进快排的方法
- 快速排序 改进快排的方法
- 快速排序 改进快排的方法
- 快排的递归与非递归
- 关于快排与随机化快排
- 先贴上代码:Random快排,快排的非递归实现
- C++快排实现代码
- 快排的疑惑?
- H5移动端开发学习总结
- iOS runtime运行时详解
- R pieces
- ViewPager +FragmentPagerAdapter 的获取getActivity()
- lua5.2之后返回table长度
- 快排的方法与代码
- CAN基础知道
- poj 2186 Tarjan (666的牛)
- shell脚本:将指定目录下的执行文件的结果写入指定文件中
- CocoaPods安装和使用教程
- javascript 的 继承(一) 之 原型链继承
- Lua 类型和值
- L1,L2正则化理解-奥卡姆剃刀(Occam's razor)原理
- ThinkPHP集成阿里支付