快排的java两种实现方式
来源:互联网 发布:埃迪·琼斯数据 编辑:程序博客网 时间:2024/06/05 02:40
快排是最基础的几个排序算法之一,今天再来回顾下
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)
- 21天学通Java学习笔记-Day04
- OSStatInit()
- NYOJ--759--你知道这个规律吗?
- 不需要persistentence的字段
- IOS开发学习资料
- 快排的java两种实现方式
- System.out.println
- Android Animation学习(一) Property Animation介绍
- 深入浅出PHP(Exploring PHP)
- IE新版支持XBox360游戏手柄
- OC中的Block简单介绍
- 21天学通Java学习笔记-Day05
- android 事件分发传递机制(转)
- Google IO 2014