❶ 排序技術中 冒泡法和快速排序法的最壞情況下的比較次數是多少 其時間復雜度分別是多少
冒泡和快排最壞情況下比較次數是一樣的:
1+2+3+...+(n-1)
時間復雜度:
插入,冒泡,選擇:O(n^2)
希爾:O(n^1.2)
快排,堆排:O(nlogn)
❷ 插入排序演算法在最壞情況下最多的比較次數是
第i個數與前i-1個數繼續比較,最壞一共比較i-1次。最後還會與最前面設置的哨兵比較一次,加上1。
所以第i個數比較i次。從i=2的位置開始求和。
最後結果是b
❸ 選擇排序在最壞情況下需要比較次數的公式
4.選擇排序
直接選擇排序 排序過程
時間復雜度 假定待排序對象有n個。則需要選擇n-1次,如果從第0次開始計算,則需要選擇n-2次。每次選擇需要比較n-i-1次。所以總的排序碼比較次數是:
O(n2)
❹ 冒泡排序在最壞的情況下的比較次數為什麼是n(n-1)/2
冒泡排序如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個的話,你要求降低
排列,但是偏偏都是升序的數字;最壞的情況就是如此:次數為:n-1+n-2
.........+1=n*(n-1)/2;好累哇哇
❺ 下列排序方法中,最壞情況下比較次數最少的是 A)冒泡排序
什麼是交換排序呢?
交換排序:兩兩比較待排序的關鍵字,並交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。
演算法思想
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端,故名。
假設有一個大小為 N 的無序序列。冒泡排序就是要每趟排序過程中通過兩兩比較,找到第 i 個小(大)的元素,將其往上排。
以上圖為例,演示一下冒泡排序的實際流程:
假設有一個無序序列 { 4. 3. 1. 2, 5 }
第一趟排序:通過兩兩比較,找到第一小的數值 1 ,將其放在序列的第一位。
第二趟排序:通過兩兩比較,找到第二小的數值 2 ,將其放在序列的第二位。
第三趟排序:通過兩兩比較,找到第三小的數值 3 ,將其放在序列的第三位。
至此,所有元素已經有序,排序結束。
要將以上流程轉化為代碼,我們需要像機器一樣去思考,不然編譯器可看不懂。
假設要對一個大小為 N 的無序序列進行升序排序(即從小到大)。
(1) 每趟排序過程中需要通過比較找到第 i 個小的元素。
所以,我們需要一個外部循環,從數組首端(下標 0) 開始,一直掃描到倒數第二個元素(即下標 N - 2) ,剩下最後一個元素,必然為最大。
(2) 假設是第 i 趟排序,可知,前 i-1 個元素已經有序。現在要找第 i 個元素,只需從數組末端開始,掃描到第 i 個元素,將它們兩兩比較即可。
❻ 對於長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數中正確的是()
D~
冒泡最壞情況下,就是反序的序列排序,例如
3 2 1排成1 2 3
這樣排的話,比較次數就是n*(n-1)/2
快速排序最壞情況,就是每次選的基準數,都對比過整段。然後,將劃分這段數為0和n-1,例如
1 2 3 4
1做第一次對比數,從後向前對比,比完後劃分,2 3 4分成下一段,遞歸
這樣比較就是n*(n-1)/2次~