基礎演算法之選擇排序Selection Sort

2022-02-12 23:26:30 字數 1140 閱讀 8206

原理

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。一種簡單直觀的排序演算法。

例子將陣列[3,6,4,2,5,1]進行從大到小排序

排序步驟:

第一趟找到最小數1,放到最前邊(與首位數字交換)

交換前:| 3 | 6 | 4 | 2 | 5 | 1 |

交換後:| 1 |

6 | 4 | 2 | 5 | 3 |

第二趟找到剩餘[6,4,2,5,3]數字裡的最小數2,與當前陣列的首位數字進行交換

交換前:| 1 | 6 | 4 | 2 |

5 | 3 |

交換後:| 1 | 2 |

4 | 6 | 5 | 3 |

第三趟找到剩餘[4,6,5,3]數字裡的最小數3,與當前陣列的首位數字進行交換

交換前:| 1 | 2 | 4 | 6 | 5 | 3 |

交換後:| 1 | 2 | 3 |

6 | 5 | 4 |

第四趟找到剩餘[6,5,4]數字裡的最小數4,與當前陣列的首位數字進行交換

交換前:| 1 | 2 | 3 | 6 |

5 | 4 |

交換後:| 1 | 2 | 3 | 4 |

5 | 6 |

第五趟找到剩餘[5,6]數字裡的最小數5,本來就在首位,無須交換

交換前:| 1 | 2 | 3 | 4 | 5 | 6 |

交換後:| 1 | 2 | 3 | 4 | 5 | 6 |

至此,排序完畢,輸出最終結果1 2 3 4 5 6

動畫演示

**參考

static

void main(string

args)

;selection_sort(intarray);

foreach (var item in

intarray)

console.readline();

}static

void selection_sort(int

unsorted)

}if (min !=i)}}

參考資料

維基百科

演算法基礎之選擇排序

說一下選擇排序的基本演算法 現在有這樣乙個陣列,3 4 6 1 7 2 5 8 我們對其進行從小到大的排序 現在我們預設陣列中第乙個元素就是陣列中的最小值,將它與其後邊的所有元素進行比較,當有元素的值小於當前預設最小元素時,交換這兩個元素的順序。當陣列第乙個元素小於後邊所有元素時,我們再用陣列第二個...

演算法基礎之選擇排序

選擇排序是排序演算法當中的入門演算法,相信學過資料結構與演算法的同學都是從這個排序開始的吧。大一接觸選擇排序演算法的時候覺得好簡單 相比氣泡排序來說 因為它的實現方式比較接近於人的思維方式。顧名思義,選擇排序演算法,起碼會有個 選擇 的過程吧?沒錯,選擇排序就是設定了兩個區域,乙個為有序區,另乙個則...

基礎演算法之選擇排序演算法

在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。def select sort array for i in range len arr...