【排序系列】快速排序java实现
2011-10-30 02:59
375 查看
package Sorting; import java.util.Random; /* * 快速排序 * 根据序列轴值划分为两部分,把两部分再递归排序 */ public class QuickSort { //轴值把序列划分为两个子序列,子序列的大小对性能影响较大 static int getPivot(int array[],int left,int right) { //可以选择k(奇数)个随机元素,取其中值下标为轴值 int pivot = right; return pivot; } //在array[left,right]中,根据轴值,划分为较小序列array[left,store]和较大array[store+1,right] static int partition(int array[],int left,int right) { int pivot = getPivot(array,left,right); Utility.swap(array, pivot, right); int store = left; for(int i=left;i<=right-1;i++) { if(array[i]<=array[right]) { Utility.swap(array, i, store); store++; //维持指向较大序列的第一个 } } Utility.swap(array, store, right); return store; } static void quickSort(int array[],int left,int right) { if(left<right) { int pivot = partition(array, left, right); quickSort(array, left, pivot - 1); quickSort(array, pivot + 1, right); } } public static void main(String[] args) { Random random = new Random(); int[] array = new int[20]; for (int i =0; i!=array.length;i++) { array[i] = Math.abs(random.nextInt())%100; } System.out.println("Before Sorting:"); Utility.printArray(array); quickSort(array, 0 , array.length - 1); System.out.println("After Sorting:"); Utility.printArray(array); } }
相关文章推荐
- 快速排序java并行实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- Java 快速排序 代码实现
- Java 实现 堆排序 快速排序 以及 TopK问题(一)
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- 插入排序,希尔排序,堆排序,归并排序,快速排序Java实现
- 快速排序的递归和非递归实现 -----C++、JAVA代码实现
- java实现快速排序-递归
- 快速排序之java实现
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 快速排序--Java实现
- 分治算法的应用,快速排序java实现
- 快速排序的java实现(key的位置可任取)
- JAVA排序算法实现代码-快速(Quick Sort)排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- 快速排序(java实现)
- 黑马程序员————java实现快速排序
- java实现七种排序 (插入排序, 希尔排序, 插入排序, 快速排序, 简单选择排序, 堆排序, 归并排序)
- java实现排序(冒泡、选择、快速、插入)
- 快速排序的Java和Scala实现