簡單選擇排序

2021-08-08 01:16:46 字數 736 閱讀 4531

簡單選擇排序的思路很簡單,首先,找到陣列中最小的元素,將它和陣列中的第乙個元素交換,其次在剩下的元素中找到最小的元素,將它與陣列中的第二個元素交換,如此往復,直到將整個陣列排序。這種排序的演算法叫做選擇排序,因為它總是在未排序的陣列中找到最小元素,每次找到最小的元素後,將它與陣列第乙個未排序的位置交換,因此內迴圈每次結束後,都將乙個元素的位置最終確定下來。

看下選擇排序的實現:

public

class

selectionsort

for (int i = 0; i < a.length; i++)

}//將a[i+1,a.length-1]的最小值和a[i]交換

exchange(a, i, minindex);}}

private

static

void

exchange(int a, int i, int j)

}

選擇排序的實現很簡單,也很容易理解。內迴圈需要遍歷剩下未排序的陣列,找到最小值。

選擇排序的交換次數為

n 次,

n是陣列的大小。

選擇排序的比較次數為(n

−1)+

(n−2

)+⋯+

1=n(

n−1)

/2~ n2

/2。因此,選擇排序的時間複雜度為o(

n2) ,並且和輸入無關。

選擇排序的空間複雜度為o(1)。

簡單選擇排序 簡單選擇排序詳解

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 到...