快速排序演算法分析

2021-06-16 07:52:53 字數 855 閱讀 2471

// 快速排序演算法

#include #include void quicksort(int *arr, int nleft, int nright)

i = nleft;

j = nright;

int nmid = (nleft + nright) / 2;

int nmidval = arr[nmid];

while (i < j)

// from right move to left

while ((arr[j] > nmidval) && (i < j))

if (i < j)

}nmid = j;

quicksort(arr, nleft, nmid);

quicksort(arr, nmid+1, nright);

}int main()

; int i = 0;

char c;

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

printf("\n\n");

quicksort(arrtest, 0, 9);

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

printf("\n\n");

scanf("%c", c);

return 0;

}

演算法分析:

時間複雜度

最好情況(每次總是選到中間值作樞軸)t(n)=o(nlogn)

最壞情況(每次總是選到最小或最大元素作樞軸)

做n-1趟,每趟比較n-i次,總的比較次數最大:[o(n2)] 退化為氣泡排序

平均時間複雜度為::t(n)=o(nlogn)

排序演算法分析 快速排序

假設有n個元素,現在要把這些元素按照從小到大的順序進行排序,那麼演算法步驟如下,選擇中間位置的元素作為基準值 pivot value 其索引為 0 n 1 2 從第0個元素開始從左往右找到比基準值大的元素,其索引為i從第n 1個元素開始從右往左找到比基準值小的元素,其索引為j交換這兩個元素 從索引i...

快速排序演算法分析

經常在面試時會有面試官要求直接寫出快速排序演算法,因為該演算法在排序演算法中占有非常重要的地位,它排序效率高,達到o nlogn 最壞的情況也是o n 2 它的思想為對於乙個待排序的序列,首先隨機選取乙個元素作為樞軸,然後通過元素值的比較,將整個序列分成兩部分,前一部分所有元素都小於或等於該樞軸元素...

快速排序演算法分析

include stdafx.h void qsort int a,int low,int high printf s 呼叫qsort開始 n int first low intlast high int key a first 用字表的第乙個記錄作為樞軸 intm 1 while first la...