1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
public class QuickSort {
private void sort(int[] arr, int start, int end){ if (start < end) { int k = partion(arr, start, end); sort(arr, start, k - 1); sort(arr, k+1, end); } }
private int partion(int[] arr ,int start, int end){ int pivot = arr[start]; while (start < end){ while (start<end && arr[end] >= pivot){ end --; } arr[start] = arr[end]; while (start<end && arr[start] <= pivot){ start++; } arr[end] = arr[start]; } arr[start] = pivot; return start; }
private void topK(int[] arr, int k){ int x = partion(arr,0,arr.length-1); while (x != k-1){ if (x > k-1){ x = partion(arr,0,x-1); }else { x = partion(arr,x+1,arr.length-1); } } for (int i = 0; i < k; ++ i){ System.out.print(arr[i] + ","); } }
public static void main(String[] args) { int[] arr = new int[100]; for (int i = 0; i < 100; i++) { arr[i] = (int)(Math.random()*100+1); System.out.print(arr[i]+","); } System.out.println(); QuickSort quickSort = new QuickSort(); quickSort.sort(arr,0 ,arr.length-1); for (int i : arr) { System.out.print(i+","); } System.out.println(); quickSort.topK(arr,10); } }
|
近期评论