氣泡排序的思想就是不停的交換,通過交換完成最終的排序,但是我們可不可以在排序的過程中找到合適的關鍵字再做交換,並且只移動一次就完成相應關鍵字的排序定位工作,這就是選擇排序的初步思想。
選擇排序的基本思想就是(有n個資料,即長度為n)在 n - start +1 個記錄中(start為大迴圈的開始)選取最小的記錄作為有序序列的第start個記錄,即經過n - i 次比較,從n - i + 1個記錄中選出關鍵字最小的記錄,並和第 start 個記錄交換。
複雜度分析:
應該說,儘管與氣泡排序同為o(n * n),但選擇排序的效能還是要優於氣泡排序。
下面是演算法的php程式設計實現:
<?phpheader("content-type:text/html;charset=utf-8");
/** 選擇法排序:
* 兩兩比較,最小的值在每一次迴圈的開頭
* 時間複雜度:o(n^2);額外空間複雜度o(1)
* */
function selectsort1($arr)
//echo count($arr);
for ($start = 0;$start
swap(
$arr,$minindex,$start);//
將最小值移到開始的位置
}
return
$arr;}
function swap(&$arr,$i,$j)
$arr = [2,33,45,22,64,67,12,1,0,9];
$arr2 = selectsort2($arr
);print_r($arr2);//
結果:array ( [0] => 0 [1] => 1 [2] => 2 [3] => 9 [4] => 12 [5] => 22 [6] => 33 [7] => 45 [8] => 64 [9] => 67 )
簡單選擇排序 簡單選擇排序詳解
n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 初始狀態 無序區為r 1.n 有序區為空。第1趟排序 在無序區r 1.n 中選出關鍵字最小的記錄r k 將它與無序區的第1個記錄r 1 交換,使r 1.1 和r 2.n 分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區...
選擇排序 簡單選擇排序
在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。第一趟,從n個記錄中找出關鍵碼最小的記錄與第乙個記錄交換 第二趟,從第二個記錄開始的n ...
選擇排序 簡單選擇排序
1.選擇排序 簡單選擇排序,堆排序 與交換排序 氣泡排序,快速排序 的區別 每次比較如果發現較小的元素在後面,就交換兩個相鄰的元素。而選擇排序演算法的改進在於 先並不急於調換位置,先從a 1 開始逐個檢查,看哪個數最小就記下該數所在的位置p,等一躺掃瞄完畢,再把a p 和a 1 對調,這時a 1 到...