下列排序方法中,最壞情況下比較次數最少的是A氣泡排序

2021-03-06 16:31:28 字數 5286 閱讀 6347

1樓:匿名使用者

最壞情況下比較次數最少的為d)堆排序:

a)氣泡排序 需要比較o(n^2)次(n(n - 1)/2次),即序列逆序的情況

b)簡單選擇排序,無論是否最壞都需要o(n^2)次(n(n - 1)/2次)

c)直接插入排序,最壞情況需要比較o(n^2)次(n(n - 1)/2次)

d)堆排序,無論是否最壞比較o(nlog2n)次

e)快速排序,最壞情況退化為氣泡排序,需要比較o(n^2)次(n(n - 1)/2次)

2樓:和藹的曾海永

最壞情況下比較次數最少的為d)堆排序

延展回答:

a)氣泡排序 需要比較o(n^2)次(n(n - 1)/2次),即序列逆序的情況

b)簡單選擇排序,無論是否最壞都需要o(n^2)次(n(n - 1)/2次)

c)直接插入排序,最壞情況需要比較o(n^2)次(n(n - 1)/2次)

d)堆排序,無論是否最壞比較o(nlog2n)次

e)快速排序,最壞情況退化為氣泡排序,需要比較o(n^2)次(n(n - 1)/2次)

下列排序方法中,最壞情況下比較次數最少的是?

3樓:和藹的曾海永

最壞情況下比較次數最少的為d)堆排序

延展回答:

a)氣泡排序 需要比較o(n^2)次(n(n - 1)/2次),即序列逆序的情況

b)簡單選擇排序,無論是否最壞都需要o(n^2)次(n(n - 1)/2次)

c)直接插入排序,最壞情況需要比較o(n^2)次(n(n - 1)/2次)

d)堆排序,無論是否最壞比較o(nlog2n)次

e)快速排序,最壞情況退化為氣泡排序,需要比較o(n^2)次(n(n - 1)/2次)

下列排序方法中,最壞情況下比較次數最少的是()為什麼 ?a)氣泡排序 b)簡單選擇排序 c)直接插入排序 d)堆

4樓:上官影汐

最壞情況下:直接選擇排序:每次都要執行交換,總移動次數為(n-1)次交換 o(n)

氣泡排序:每比較一次都要進行一次交換 ,移動次數為 3n(n-1)/2 o(n2)

直接插入排序:n2/4 o(n2)堆排序: o(nlog2n)

所以,應該選d

下面的排方法中,最壞的情況下比較次數最少的是( ) a氣泡排序 b簡單選擇排序 c直接插入排序 d 堆排序 5

5樓:匿名使用者

從原理上給你推導下:

1.冒泡法: 這是最原始,也是眾所周知的最慢的演算法了。

他的名字的由來因為它的工作看來象是冒泡: #include void bubblesort(int* pdata,int count) }while(i <=j);//如果兩邊掃描的下標交錯,就停止(完成一次) //當左邊部分有值(left i),遞迴右半邊 if(right>i) run(pdata,i,right); } void quicksort(int* pdata,int count) void main() ; quicksort(data,7); for (int i=0;i <7;i++) cout < void bubble2sort(int* pdata,int count) pdata[w+k] = itemp; } } } void main() ; shellsort(data,12); for (int i=0;i <12;i++) cout <

下列排序方法中,

6樓:匿名使用者

^因為冒bai泡排序的迴圈為du

for (i=1;i<=n;i++)

for (j=(i+1);j<=n;j++)所以zhi總共的排序次數為n!-n,所以就是n(n-1)/2。之所以表示dao為o(n^版2)是因為這表示的是它的時間復權雜度,因為氣泡排序還可以表示為:

for (i=1;i<=n;i++)

for (j=1;j<=n;j++)

而這是它進行的迴圈為n^2,這是在他的資料量很小的情況下進行的,當資料量足夠大,就是n!遠遠大於n的時候,n!-n趨近於n^2。所以我們用o(n^2)表示它的時間度。

o(nlog2n)要優於o(n^2),當資料量小的時候感覺不明顯,但是資料量大了之後,前者的速度比後者要快得多。堆排序要優於其他的排序,因為其速度快,穩定,資料量不受陣列的限制。

在最壞的情況下,下列排序方法中時間複雜度最小的是()a.氣泡排序 b.快速排序 c.插入排序d.堆排序

7樓:匿名使用者

答案是d,堆排序。

選項中的四種排序方法的最壞時間複雜度、最好時間複雜度 、平均時間複雜度分別為:

a、氣泡排序: o(n2) 、o(n) 、o(n2)。

b、快速排序: o(n2) 、o(nlog2n)、 o(nlog2n)。

c、插入排序: o(n2)、 o(n) 、o(n2)。

d、堆排序: o(nlog2n)、 o(nlog2n)、 o(nlog2n)。

所以,在最壞情況下,氣泡排序時間複雜度=快速排序時間複雜度=插入排序時間複雜度= o(n2)>堆排序時間複雜度= o(nlog2n)。答案選d。

8樓:匿名使用者

排序方法 最壞時間複雜度 最好時間複雜度

平均時間複雜度

直接插入 o(n2) o(n) o(n2)

簡單選擇 o(n2) o(n2) o(n2)

起泡排序 o(n2) o(n) o(n2)

快速排序 o(n2) o(nlog2n) o(nlog2n)

堆排序 o(nlog2n) o(nlog2n) o(nlog2n)

歸併排序 o(nlog2n) o(nlog2n) o(nlog2n)

所以選d

以下排序演算法最壞情況下時間複雜度最低的是 a.氣泡排序 b.插入 c.選擇 d.快排

9樓:木頭釋然

在氣泡排序,插入排序,選擇排序,快速排序中,在最最壞情況下,快速排序的時間複雜為o(n2) ,插入排序o(n2),選擇排序o(n2),氣泡排序o(n2)。所以abcd時間複雜度是一樣的。

在快速排序演算法中,最為關鍵的就是選取一個基值,將陣列分為大於基值以及小於基值兩部分,並返回基值所以在位置以利用於遞迴劃分。

對陣列a,設需要劃分的其中一段為a[p]~a[r],我們期待的結果是得到一個q,其中p<=q<=r,使得a[p]~a[q-1]<=a[q]<=a[q+1]~a[r],這個時候原先的一段陣列被分成了三部分。

首先,設基值為這段陣列的最後一個元素a[r],我們希望最後得到的結果是a[r]現在對應的值在演算法結束後可以排在比他大和小的兩部分的中間愛。

然後令i=p-1; j=p,當發現有a[j]>x時,j繼續前進,不需要任何移動。當發現a[j]<=x時,我們需要將這個元素放到小於基值的一邊,於是將i自加1,並交換此時a[i],與a[j]的元素,然後j自加1。這個時候i指向的是比基值小的那段資料的最後一個元素,j指向的是第一個還沒有判斷的剩餘元素。

上面一步不斷迴圈直到j指向了r,此時只剩下r沒有和基值判斷了,而a[r]本來就是基值,而除了a[r]以外,a[p]~a[i]是小於基值的部分,a[i+1]~a[r-1]是大於基值的部分,所以此時只需交換a[i+1]和a[r]即可。

由於對陣列a從頭到尾掃描一次就可以得到結果,因此這一部分演算法複雜度為o(n)

10樓:匿名使用者

1.選擇排序:不穩定,時間複雜度 o(n^2)

選擇排序的基本思想是對待排序的記錄序列進行n-1遍的處理,第i遍處理是將l[i..n]中最小者與l[i]交換位置。這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。

2.插入排序:穩定,時間複雜度 o(n^2)

插入排序的基本思想是,經過i-1遍處理後,l[1..i-1]己排好序。第i遍處理僅將l[i]插入l[1..

i-1]的適當位置,使得l[1..i] 又是排好序的序列。要達到這個目的,我們可以用順序比較的方法。

首先比較l[i]和l[i-1],如果l[i-1]≤ l[i],則l[1..i]已排好序,第i遍處理就結束了;否則交換l[i]與l[i-1]的位置,繼續比較l[i-1]和l[i-2],直到找到某一個位置j(1≤j≤i-1),使得l[j] ≤l[j+1]時為止。圖1演示了對4個元素進行插入排序的過程,共需要(a),(b),(c)三次插入。

3.氣泡排序:穩定,時間複雜度 o(n^2)

氣泡排序方法是最簡單的排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的「氣泡」,較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個「氣泡」序列處理若干遍。

所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。如果發現兩個相鄰元素的順序不對,即「輕」的元素在下面,就交換它們的位置。顯然,處理一遍之後,「最輕」的元素就浮到了最高位置;處理二遍之後,「次輕」的元素就浮到了次高位置。

在作第二遍處理時,由於最高位置上的元素已是「最輕」元素,所以不必檢查。一般地,第i遍處理時,不必檢查第i高位置以上的元素,因為經過前面i-1遍的處理,它們已正確地排好序。

4.堆排序:不穩定,時間複雜度 o(nlog n)

堆排序是一種樹形選擇排序,在排序過程中,將a[n]看成是完全二叉樹的順序儲存結構,利用完全二叉樹中雙親結點和孩子結點之間的內在關係來選擇最小的元素。

5.歸併排序:穩定,時間複雜度 o(nlog n)

設有兩個有序(升序)序列儲存在同一陣列中相鄰的位置上,不妨設為a[l..m],a[m+1..h],將它們歸併為一個有序數列,並儲存在a[l..h]。

6.快速排序:不穩定,時間複雜度 最理想 o(nlogn) 最差時間o(n^2)

快速排序是對氣泡排序的一種本質改進。它的基本思想是通過一趟掃描後,使得排序序列的長度能大幅度地減少。在氣泡排序中,一次掃描只能確保最大數值的數移到正確位置,而待排序序列的長度可能只減少1。

快速排序通過一趟掃描,就能確保某個數(以它為基準點吧)的左邊各數都比它小,右邊各數都比它大。然後又用同樣的方法處理它左右兩邊的數,直到基準點的左右只有一個元素為止。

幾種排序的時間複雜度,可以參考一下

氣泡排序在最壞的情況下的比較次數為什麼是n n

氣泡排序如1,2,3,4最好的情況是按完全升級排列,最壞就是數字完全按降序排列 第一次是1 然後1和2,3,4 第2次是2 比較誰比它小交換,於是2和34交換,答案是3421 第3次為3 3和4 最後是4321 這就是最壞情況下的次數3 2 1 6 4 3 2 其實對於n個的話,你要求降低排列,但是...

排序技術中冒泡法和快速排序法的最壞情況下的比較次數是多少

冒泡和快排最壞情況下比較次數是一樣的 1 2 3 n 1 時間複雜度 插入,冒泡,選擇 o n 2 希爾 o n 1.2 快排,堆排 o nlogn 下列排序方法中,最壞情況下比較次數最少的是?最壞情況下比較次數最少的為d 堆排序 延展回答 a 氣泡排序 需要比較o n 2 次 n n 1 2次 即...

二分法查詢最壞情況下需要比較次數,為什麼n次和O(log

後者是演算法複雜度的意思 n次是正確的嗎?應該是log 2 n次才對啊 用二分法查詢最多log2 n 用順序查詢最多是n次 順序查詢需要比較n次,二分法查詢需要比較log n次 在最壞情況下,堆排需要進行比較的次數為nlog2n,為什麼是這樣啊,n是什麼含義,如果n為奇數不就 o n1og2n 在b...