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

2021-07-12 17:32:43 字數 1730 閱讀 1100

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

高一數學必修3知識點演算法排序問題與演算法的多樣性

1 演算法的特徵 1 確定性 演算法的確定性是指一個演算法中每一步操作都是明確的,不能模糊或有歧義,演算法執行後一定產生明確的結果 2 有窮性 演算法的有窮性是指一個演算法必須能夠在有限個步驟之內把問題解決,不能無限的執行下去 3 可行性 演算法的可行性是指一個演算法對於某一類問題的解決都必須是有效...

資料結構中什麼是排序演算法的穩定性

比如說 5 2 3 5 1 排序後可能是 5 5 3 2 1 也可能是5 5 3 2 1,前者是穩定的,後者是不穩定的。冒泡,選擇有穩定性,快拍沒有 資料結構中幾種常見的排序演算法之比較 冒泡。複雜度n平方。適用於陣列 插入排序。複雜度n平方。適用於連結串列 快排。複雜度nlog n 希爾排序。這是...

怎樣證明連續n個數的積能被n整除

設這個n個連續整數來 分自別是 k 1,k 2,k n 則k 1 t mod n k 2 t 1 mod n k n t n 1 mod n 由於模bain剩餘類du中,zhi只有n個等價dao類 即餘數只能是0,1,2。n 1這n種情況 因此t t 1,t 2,t n 1 必有1個滿足 0 mod...