1. 程式人生 > >快速排序 JAVA實現

快速排序 JAVA實現

return 快速 ring nbsp pre i++ public system println

快速排序

每次排序的時候設置一個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全部放到基準點的右邊。
快速排序是不穩定的,時間復雜度(平均):nlogn

public class QuickSort {
    public static void Sort(int[] arr, int low, int high) {
        int i, j, temp;
        if (low > high) {
            return;
        }
        i = low;
        j = high;
        
// temp就是基準位 temp = arr[low]; while (i < j) { //從右向左,找到小於基準位的數組成員位置 while (temp <= arr[j] && i < j) { j--; } //從左向右,找到大於基準位的數組成員位置 while (temp >= arr[i] && i < j) { i
++; } //如果滿足條件則交換arr[i],arr[j] if (i < j) { swap(arr, i, j); } } //最後將基準為與i和j相等位置的數字交換(此時i j相等) arr[low] = arr[i]; arr[i] = temp; //分而治之 Sort(arr, low, i - 1); Sort(arr, i
+ 1, high); } public static void swap(int[] a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static void main(String[] args) { int[] arr = { 4, 5, 9, 4, 7, 23, 3, 4, 2, 1, 8, 11, 19, 10 }; Sort(arr, 0, arr.length - 1); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }

快速排序 JAVA實現