排序演算法總結(五)快速排序

2021-06-18 08:53:34 字數 593 閱讀 3507

快速排序的思想是選取待排陣列中的乙個數作為中間數(一般是第乙個數),然後將陣列中數與這個中間數進行比較,使中間數左邊的數都小於中間數,中間數右邊的數都大於中間數,這樣中間數就在正確的位置上,然後將左右兩部分再次進行相同的操作,最終會得到乙個有序的陣列。

快速排序的演算法平均時間複雜度為o(nlogn),最壞的情況每次劃分將陣列分成1和n-1兩部分,演算法時間複雜度為o(n2),需要輔助空間為o(logn),是不穩定的排序。

#include using namespace std;

int partion(int *arrays, int low, int high);

void quicksort(int *array, int low, int high);

int main(void)

; int i;

quicksort(arrays,0,7);

for (i=0;i<8;i++)

arrays[low]=mid;

return low;

}void quicksort(int *array, int low, int high)

}

排序演算法(五) 快速排序

在陣列中選取乙個數作為基準值,進行乙個partition過程,將小於該數的放在左邊,大於的放在右邊,等於的放在中間,再對左右分別進行該操作。時間複雜度 每次partition可以將乙個數字位置確定,將陣列劃分為兩部分,因此想要有序,理想情況每次剛好兩邊大小一樣,則一共需要logn次partition...

排序演算法(五) 快速排序

快速排序是一種效率很高的排序演算法,也是我們使用最多的一種排序演算法。快速排序原理 兩個指標分別指向陣列兩頭元素,將陣列第乙個元素儲存下來,作為基準數,兩個指標開始向中間移動,先移動陣列尾部指標,直到發現所指元素比基準數小時,將這時候所指向的數賦值給陣列頭部指標指向的位置,然後尾部指標停止移動,頭部...

排序演算法五 快速排序

取陣列最中間的那個數為基數 取哪乙個數為基數都可以,取中間的只是為了好理解 在左邊找乙個比基數大的數,在右邊找乙個比基數小的數,如果找到就交換兩個數的位置,交換過後再向下尋找,直到左邊的角標大於等於右邊則退出,一輪排序後,基數的左邊一定都是比基數小的,基數的右邊一定是比基數大的,注意 基數不一定還在...