程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言裡冒泡排序和選擇排序哪個效率高

C語言裡冒泡排序和選擇排序哪個效率高

編輯:C語言問答

C語言裡冒泡排序和選擇排序哪個效率高

精華答案

畢佳水 2010-08-07

要知道哪個效率高就要知道他們的排序比較方式有什麼不同,我們先來比較一下!

 

例:

     如要將數組:[12,14,26,5,8]   按升序排列成:[5,8,12,14,26]


選擇排序:

     第一趟:將第一個數與第二個數相比較;若第二個數較小,則第一個數與第二個數交換,否則不變;
     再將第一個數與第三個數比較,若第三個數較小,則交換,否則不變;
     依此類推,則第一趟排序時各數據所處位置應是:
初始:12,14,26,5,8
第一次比較後:12,14,26,5,8
(注:第一次比較後,因12<14,故不變)
第二次比較後:12,14,26,5,8
(注:第二次比較後,因12<26,故不變)
第三次比較後:5,14,26,12,8

(注:第三次比較時,12是第一位數,與第四位數5相比較)
第四次比較後:5,14,26,12,8

(注:第四次比較後,因8>5,故不變)

第二趟排序時,因首位數字5己是最小數,且排在第一位,就可以不再管它了,就只需對數組:[14,26,12,8]  進行排序,具體過程同上面一樣。



冒泡排序:

     首先將處於第一位置的數與處第二位置的數相比較,若第二位置的數較小,則交換,否則不變;此處,因14>12,故不變。
     然後將第二位置的數與第三位置的數比較,若後者較小,則交換,否則不變;此例中,因14<26,故不變。
     再將第三位置的數與第四位置的數比較,若後者小,則交換,否則不變;此例中,因5<26,故交換;   交換後,26為新的第四位置數。
     依此類推,將第四位置數與第五位置數相比較,即完成了第一趟排序。

第一趟排序過程中各數據位置:
初始:12,14,26,5,8
第一次比較後:12,14,26,5,8
第二次比較後:12,14,26,5,8
第三次比較後:12,14,5,26,8
第四次比較後:12,14,5,8,26
第二趟排序與第一趟排序類似,只是所需排的數組是:[12,14,5,8]     因最後一個數字己經是最大,且排在最後,故不再管它。

 

通過上面的實例應該知道,選擇排序是每一個都比較(絕對比較);而冒泡法是相對的比較,它是相對之前的數比較;如果有一組排好序的數組  [1,2,3,4,5,6]  再用選擇排序法和冒泡法,那肯定是冒泡法先執行完,因為冒泡法只要執行一趟(運用相對比較),而選擇要執行五趟(用的是絕對比較);從這就可以看出冒泡法比選擇排序法的效率要高!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved