算法研究之快速排序
来源:互联网 发布:广联达软件怎么用 编辑:程序博客网 时间:2024/06/05 03:23
所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换这两个值,交换完成后,我们拿着这个key要从i往后遍历了,及i++;一直循环到i=j结束,当这里结束后,我们会发现大于这个key的值都会跑到这个key的后面,不是的话就可能你写错了,小于这个key的就会跑到这个值的前面;然后我们对这个分段的数组再时行递归调用就可以完成整个数组的排序。
程序实现如下:
public class Sort {public void quickSort(int[] arrays,int start,int end){if(start>end){return;}int i=start;int j=end;int key=arrays[i];//控制i,j轮流变化boolean flag=true;while(i!=j){if(flag){if(key>arrays[j]){sweep(arrays,i,j);flag=false;}else {j--;}}else {if(key<arrays[i]){sweep(arrays,i,j);flag=true;}else {i++;}}}//对分隔的两端再次进行递归调用quickSort(arrays, start, j-1);quickSort(arrays, i+1, end);}//交换两个数的位置private void sweep(int[] arrays,int a,int b){int temp=arrays[a];arrays[a]=arrays[b];arrays[b]=temp;}public static void main(String[] args) {int[] a = { 49, 38, 65,12,45,5 };for (int i : a) {System.out.print(i+" ");}System.out.println();Sort sort=new Sort();sort.quickSort(a, 0, a.length-1);for (int i : a) {System.out.print(i+" ");}}}
结果如下:
49 38 65 12 45 5
5 12 38 45 49 65
- 算法研究之快速排序
- 算法研究之快速排序
- 算法研究之快速排序
- 算法研究之快速排序java版
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- [算法]之快速排序
- 算法之--快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- Timer & TimerTask 深入分析
- 怎样在Linux中查看apache是用那个httpd.conf
- 批量设置flash文档中TextField 使用设备字体
- C++中的智能指针(Smart Pointer)
- vs 最常用的快捷键 背吧背吧背吧背吧背吧背吧
- 算法研究之快速排序
- dictionary字典
- Linux系统下的C语言开发都需要学些什么
- WPF编程宝典:使用C_#.2008和.NET.3.5(第2版)(奋斗的小鸟)_PDF 电子书
- RAC IP 地址修改
- Boost Python简介
- Android 应用签名提权方法
- 深度解析Java内存的原型
- 地区三级联动