快排的java两种实现方式
来源:互联网 发布:淘宝店铺软文推广 编辑:程序博客网 时间:2024/05/17 13:11
快排是最基础的几个排序算法之一,今天再来回顾下
public class QuickSort {public static void quickSort(int[] array){if(array != null){quickSort(array, 0, array.length-1);}}private static void quickSort(int[] array,int beg,int end){if(beg >= end || array == null)return;int p = partition(array, beg, end);quickSort(array, beg, p-1);quickSort(array, p+1, end);}}
上面就是快排主要的框架,最重要就是partition方法,它是划分并找到下次分割排序的位置p
常用的partition方法
private static int partition(int[] array, int beg, int end) { int first = array[beg]; int i = beg, j = end; while (i < j) { while (array[i] <= first && i < end) { i++; } while (array[j] > first && j >= beg) { j--; } if (i < j) { array[i] = array[i] ^ array[j]; array[j] = array[i] ^ array[j]; array[i] = array[i] ^ array[j]; } } if (j != beg) { array[j] = array[beg] ^ array[j]; array[beg] = array[beg] ^ array[j]; array[j] = array[beg] ^ array[j]; } return j; }
第二种partition方法实现
private static int partition(int[] array,int beg,int end){int last = array[end];int i = beg -1;for (int j = beg; j <= end-1; j++) {if(array[j] <= last){i++;if(i != j){array[i] = array[i]^array[j];array[j] = array[i]^array[j];array[i] = array[i]^array[j];}}}if((i+1) != end){array[i+1] = array[i+1]^array[end];array[end] = array[i+1]^array[end];array[i+1] = array[i+1]^array[end];}return i+1;}
个人比较喜欢第二种写法,比较简洁
0 0
- 快排的java两种实现方式
- 快排的java两种实现方式
- 快排的c++实现(两种实现方式)
- 快排的两种方式
- 快速排序(快排)算法的C++两种实现
- java 实现的快排
- 快排 的java实现
- 快排的Java实现
- 快排的两种写法
- 快排的两种写法
- 快排-java实现
- 快排java实现
- 快排--java实现
- 快排java实现
- Java快排实现
- java实现 快排
- 优雅的快排实现(Java)
- 快排的实现(Java)
- debug下,jsp内容改变加载不到tomcat路径下
- 集合框架的学习(1)
- ASP.NET动态网站开发培训-32.ADO.NET技术(四、SqlDataAdapter类与DataSet类)
- 编写自己的Shell解释器
- 在某个目录下的所有文件中查找包含某个字符串的Windows命令
- 快排的java两种实现方式
- char c=128; printf("c=%d\n",c); 结果为什么是-128
- C语言结构体及typedef关键字定义结构体别名和函数指针的应用
- unicode
- 第十二周项目二 OJ平台-分离正整数中的各位数
- 使用ZXing开发二维码
- 线性表(栈/队列)
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- 转发与重定向