選擇排序(簡單)

2021-10-17 14:12:39 字數 1737 閱讀 1576

四、總結

在需要排序的的有序性集合中取出第乙個元素依次與其後的每乙個元素比較,如果大於後面的某個數,則兩個數交換位置,在第一次排序完成後,第乙個元素存放的就是該有序集合的最小值。

取出第二個元素依次與其後的每乙個元素比較,如果大於後面的某個數,則兩個數交換位置,在第二次排序完成後,第乙個元素存放的就是該有序集合的次小值。

取出第三個元素依次與其後的每乙個元素比較,如果大於後面的某個數,則兩個數交換位置,在第三次排序完成後,第乙個元素存放的就是該有序集合的第三小的值。

以此類推…

為了方便演示的直觀性,我就選int型別陣列來演示

第一趟元素比較

誰大是否交換位置

當前陣列

此趟元素比較第幾次

5和9比9大否

15和8比8大否

25和4比5大是

34和7比7大否

4第二趟

元素比較

誰大是否交換位置

當前陣列

此趟元素比較第幾次

9和8比9大是

18和5比8大是

25和7比5大是

3第三趟

元素比較

誰大是否交換位置

當前陣列

此趟元素比較第幾次

9和8比9大是

18和7比8大是

2第四趟

元素比較

誰大是否交換位置

當前陣列

此趟元素比較第幾次

9和8比9大是

1**如下(示例):

public

class

test02

;// 建立乙個int型別的陣列

selectsort

(array)

;// 呼叫selectsort()方法(由於是在乙個類裡面呼叫,所以不用 類名.方法名 )

}public

static

void

selectsort

(int

array)}}

for(

int i : array)

}}

**如下(輸出):

457

89

**如下(示例):

public

class

test02

;// 建立乙個int型別的陣列

selectsort

(array)

;// 呼叫selectsort()方法(由於是在乙個類裡面呼叫,所以不用 類名.方法名 )

}public

static

void

selectsort

(int

array)}}

for(

int i : array)

}}

**如下(輸出):

987

54

其實改變排序的順序只需要該判斷條件」if (array[i] < array[j])」中的大於小於符號就行。

從結合上面的原理和演示分析可以發現其實選擇排序是由規律可言的

1、需要比較的趟數和集合(有序的且有下標的)的元素個數是有關係的,規律是:需要比較的趟數=元素個數-1

2、而比較的趟數里,元素需要比較的次數規律是:每一趟都會將最小的元素提到前面,所以每一趟都會減少乙個元素需要比較的元素。

選擇排序 簡單選擇排序

在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。第一趟,從n個記錄中找出關鍵碼最小的記錄與第乙個記錄交換 第二趟,從第二個記錄開始的n ...

選擇排序 簡單選擇排序

1.選擇排序 簡單選擇排序,堆排序 與交換排序 氣泡排序,快速排序 的區別 每次比較如果發現較小的元素在後面,就交換兩個相鄰的元素。而選擇排序演算法的改進在於 先並不急於調換位置,先從a 1 開始逐個檢查,看哪個數最小就記下該數所在的位置p,等一躺掃瞄完畢,再把a p 和a 1 對調,這時a 1 到...

選擇排序 簡單選擇排序

在要排序的一組數中,選出最小 或者最大 的一 個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後 乙個數 比較為止。第一趟,從n 個記錄中找出關鍵碼最小的記錄與第乙個記錄交換 第二趟,從第二個記錄開始...