在無序陣列中選出最小的與當前最小的值進行交換
具體步驟:如將第乙個元素看做此時最小值,從第二個元素開始依次向後遍歷找出最小的元素進行交換,此時第乙個位置放置的元素一定是最小的值,在從剩下的無序陣列中找出最小的與第二個元素進行交換,依次往下直到無序陣列只剩下乙個元素為止
public
static
void
selection
(int
arr)
}swap
(arr,i,minindex)
;//將找出的最小值放入無序陣列的位置
}}
int
arr =
;selection
(arr)
;for
(int i : arr)
穩定性:不穩定,例如資料為:6、7、6、4、1、5 進行第一次排序後就會將第乙個6換到1的位置,兩個6的相對位置已經發生變化,不穩定
時間複雜度:因為每次遍歷陣列都要找到進行進行多次比較找到最小值,每次遍歷只能確定乙個元素的最終位置,則時間複雜度為o(n^2)
空間度複雜度:是在本來的陣列上進行操作,沒有開闢新的空間 時間複雜度為o(1)
選擇排序 總結
選擇排序的基本思想 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。常用的選擇排序方法有直接選擇排序和堆排序。n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果。第1趟從r 0 r n 1 中選取最小值,與r 0 交換 第2趟從r 1 ...
排序演算法總結(八)選擇排序
選擇排序思想是每次從陣列中選出最大後最小的數,放到正確的位置,然後在剩餘的數中再次選擇最大或者最小的數放到正確位置,一直重複知道完成排序。include using namespace std selectsort int arrays,int n void main int i selectsor...
排序演算法總結(2) 選擇排序
思路 選擇陣列中的最左邊的元素,下標為0,同時標記此元素為最小元素。將第二個元素與此元素比較,若小於最小元素,則它取而代之成為最小元素。後邊的元素以同樣的道理進行比較和標記,在完全遍歷以後,將具有最小標記的元素和第0個元素進行交換。第二此遍歷的時候則從第二個位置開始進行比較。如下 public cl...