先從數列中取出乙個數作為基準數。
分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
再對左右區間重複第二步,直到各區間只有乙個數
public static void quicksort(int arr, int left, int right)
int i = left;
int j = right;
int base = arr[left];
while (i < j)
while (base >= arr[i] && i < j)
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}arr[left] = arr[i];
arr[i] = base;
quicksort(arr,left,i-1);
quicksort(arr,i+1,right);
}
排序演算法 快排
今天聊聊排序演算法,排序演算法平時也會用到,有很多比如,冒泡,快排,選擇,歸併排序等 今天就聊一聊快速排序演算法排序演算法的乙個宗旨就是經過一趟排序,何為一趟排序呢?就是遍歷完一次陣列,陣列中的一部分資料比另外一部分的資料都要小 當然這兩部分資料內部仍然是無序的,然後我們再對這兩部分資料分別進行排序...
演算法 快速排序 經典快排 隨機快排
經典快排的思路是選取陣列的最後乙個數 x,按照問題一的思路把整個陣列劃分成小於等於 x 大於 x兩個部分,將 x 和 大於 x 部分陣列的第乙個元素交換位置。此時整個陣列劃分成小於等於 x x 大於 x三個部分,也就是這一次排序將 x 值排好位置。再分別對小於等於 x和大於 x中的陣列遞迴劃分,直到...
排序演算法 快排,歸併
從陣列中隨機選乙個數,比這個數大的放右邊,比這個數小的放左邊。快排中的乙個細節 如果乙個數等於p的時候,既可以在左邊又可以在右邊。這麼做是為了避免如果陣列中所有的數都一樣,則會造成資料的不平衡。快排的目的是能夠使得左邊和右邊的數都差不多,這樣的話時間複雜度就不會退化到o n 2 而是o n logn...