設計n個數的排序演算法,並要求計算演算法複雜度

時間 2021-07-12 17:32:25

1樓:訾可欣迮詞

氣泡排序的演算法時間複雜度上o(n^2

)氣泡排序是這樣實現的:

首先將所有待排序的數字放入工作列表中。

從列表的第一個數字到倒數第二個數字,逐個檢查:若某一位上的數字大於他的下一位,則將它與它的下一位交換。

重複2號步驟,直至再也不能交換。

氣泡排序的平均時間複雜度與插入排序相同,也是平方級的,但也是非常容易實現的演算法。

選擇排序

選擇排序是這樣實現的:

設陣列記憶體放了n個待排數字,陣列下標從1開始,到n結束。

i=1從陣列的第i個元素開始到第n個元素,尋找最小的元素。

將上一步找到的最小元素和第i位元素交換。

如果i=n-1演算法結束,否則回到第3步

選擇排序的平均時間複雜度也是o(n^2)的。

2樓:佴宕琴恬欣

你要用什麼排序演算法呢

如果是氣泡排序,那麼時間複雜度為f(n)=o(n²)。

#include

#include

void

sort(int

*arr,intn)}

}//時間複雜度f(n)=1+(n+1)+n(n-1)/2+4×(n-1)(n-2)/2

//=xn²+yn+z

這裡的x,y,z都算常量,如果你想計算就去算//因為時間複雜度至於n的方數有關,所以f(n)=o(n²)intmain()

sort(arr,n);

printf("output

thesort

array:\n");

for(int

j=0;j

printf("\n");

free(arr);

return0;}

//上面算排序演算法的實現和演算法的時間複雜度的計算過程以及結果。要說的時演算法的複雜度主要是時間複雜度,不去研究空間複雜度

對於輸入為n個數進行快速排序演算法的平均時間複雜度是多少?

3樓:cfv呆呆獸

根據t(n) = t(ðn) + o(n) (0 < ð <1) 則有 t(n) = o(n)

因此關鍵問題

是怎樣解決劃分標準的問題, 因此產生下列線性時間找中位數的演算法:

將陣列a有n個元素, 劃分成5個一組, 則共有[n/5]個元素, 對於每組用一般的排序找中位數,需要25次, 則總共需要o(25*[n/5]) = o(n), 然後在這些中位數中遞迴找其中位數需要t(n/5)次,然後以找到的中位數x來作為劃分標準則顯然劃分時間為o(n), 再遞迴的劃分, 顯然最多有3n/4的元素小於或大於x, 則選擇中位數的總複雜度為:

t(n) = o(n) + t(n/5) + t(3n/4) 有t(n) = o(n)。

因此快速排序的複雜度為t(n) = 2t(n/2) + o(n) 有:t(n) = nlogn。

但最壞情況下複雜度為o(n^2),出現此條件的情況是n個數原來就已經按照規定要求排好序了。

設計一個排序演算法,並分析其時間複雜度

4樓:匿名使用者

可以直來接採用氣泡排序,按升序源排列就好。

public void bubblesort(int arr)}if(didswap == false)return;

} }最佳

bai情況為

duo(n),最zhi壞的情況為o(n2)。dao

python中n個數字按照絕對值大小排序,求解答

可靠的我心我在 a 1,2,3,4,0 print sorted map abs,a 0,1,2,3,4 虛聲幻隱 list 36,5,12,9,21 list sorted list,key abs print list 輸出 5,9,12,21,36 這麼寫才對吧 w饕餮 def maopao ...

徵求n階乘的優化演算法,求階乘n 的遞迴演算法

伊寄壘 include int fun int n int main 5 120 遞迴演算法的原理 遞迴是電腦科學的乙個重要概念,遞迴的方法是程式設計中有效的方法,採用遞迴編寫 遞迴能使程式變得簡潔和清晰。 海菜家的北北 思路 遞迴求階乘函式,如果輸入的引數等於1則返回1,否則返回n乘以該函式下次遞...

excel輸入N個數字就算出N個數字的平均值,比如輸入數就算這數的平均值,就的平均值

薛洋的偶像魏無羨 不知道你用的是哪個版本的excel,但是在工具欄裡都有求平均值的選項的,你找一下就ok了,挺簡單的 怎麼在excel中判斷一列數字個數小於5,如果小於等於5怎求這幾個數的算術平均值, if a1 12,a1 0.7,if a1 5,a1 0.8,if a1 3,a1 0.9,a1 ...