Java 快速排序
2016-08-02 17:48
309 查看
package com.algorithms;import java.util.Arrays;import java.util.Random;public class QuickSort {private static int count = 0;public static void quickSort(Integer[] arr, int l, int r) {if(l < r) {int p = randomPartition(arr, l, r);quickSort(arr, l, p - 1);quickSort(arr, p + 1, r);}}public static int randomPartition(Integer[] arr, int l, int r) {int p = getRandomIndex(l, r);exchange(arr, p, r);return partition(arr, l, r);}public static int partition(Integer[] arr, int l, int r) {int x = arr[r];int i = l - 1;for(int j = l; j < r; j++) {count++;if(arr[j] <= x) {i = i + 1;exchange(arr, i , j);}}exchange(arr, i + 1, r);return i + 1;}public static void exchange(Integer[] arr, int x, int y) {int temp = 0;temp = arr[x];arr[x] = arr[y];arr[y] = temp;}public static int getRandomIndex(int min, int max) {Random random = new Random(37);return random.nextInt(max)%(max-min+1) + min;}public static void main(String[] args) {Integer arr[] = {12, 2, 10, 16, 5, 6, 8, 1, 9, 18};// Integer arr[] = new Integer[30000000];// Random random = new Random(37);// for(int i = 0; i < 30000000; i++) {// arr[i] = random.nextInt(100000000)%(100000000 - 0 + 1) + 0;// }quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.asList(arr));System.out.println(count);}}其中getRandomIndex的作用是使排序达到期望的时间复杂度。
相关文章推荐
- 排序算法复习(Java实现)(三): 插入,冒泡,选择,Shell,快速排序
- 快速排序(Java)
- 快速排序的Java实现
- java写的快速排序
- 《算法导论的Java实现》 8 快速排序
- Java实现快速排序
- PKU-1002使用java编写用快速排序为何一直Runtime Error 无解 留下问题 以后再看
- 递归分治法在快速排序中的应用 java以界面的方式实现
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 快速排序原理及java实现
- java实现快速排序
- java快速排序
- Java快速排序
- 快速排序实现(JAVA)
- java+快速排序+随机生成数+英文翻译
- 数据结构——快速排序原理及算法Java实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- java写的快速排序 记录下。。
- 会议安排---贪心算法---快速排序(java)
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序