十大排序(C++版)-- 選擇排序(SelectSort)
????????選擇排序也是一種易于理解的算法。在長度為n的數(shù)組中,其實現(xiàn)原理是每次遍歷數(shù)組時選擇一個最小的值的下標,與當前數(shù)組遍歷的開頭交換,保證每遍遍歷的開頭都是最小的數(shù),正好與冒泡相反。代碼實現(xiàn)如下:
同樣的這樣一個數(shù)組:[5,3,8,6,9,2,1,4,7]
打印每遍遍歷后的結(jié)果。


圖中可以很明顯的看到,每遍遍歷后都選中了最小的值的下標,并于當前遍歷的頭下標進行交換,執(zhí)行n-1次。與冒泡排序類似。
時間復雜度:O(n^2),空間復雜度:O(1)
既然時空復雜度一樣,每遍數(shù)組遍歷結(jié)果也類似,那么優(yōu)缺點當然也是一樣的啦!(不是)由于每遍都要重復遍歷數(shù)組選取最小值的下標,那么即使在最好的情況下時間復雜度也是O(n^2)。
標簽: