選擇排序Selection sort

2021-08-28 09:19:11 字數 1382 閱讀 7309

顧名思意,就是直接從待排序陣列裡選擇乙個最小(或最大)的數字,每次都拿乙個最小數字出來,

順序放入新陣列,直到全部拿完

再簡單點,對著一群陣列說,你們誰最小出列,站到最後邊

然後繼續對剩餘的無序陣列說,你們誰最小出列,站到最後邊

再繼續剛才的操作,一直到最後乙個,繼續站到最後邊,現在陣列有序了,從小到大

舉例

先說看每步的狀態變化,後邊介紹細節,現有無序陣列[6 2 4 1 5 9]

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

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

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

第二趟找到餘下數字[2 4 6 5 9]裡的最小數2,與當前陣列的首位數字進行交換,實際沒有交換,本來就在首位

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

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

第三趟繼續找到剩餘[4 6 5 9]數字裡的最小數4,實際沒有交換,4待首位置無須交換

第四趟從剩餘的[6 5 9]裡找到最小數5,與首位數字6交換位置

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

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

第五趟從剩餘的[6 9]裡找到最小數6,發現它待在正確的位置,沒有交換

排序完畢輸出正確結果[1 2 4 5 6 9]

第一趟找到最小數1的細節

當前陣列是| 6 | 2 | 4 | 1 | 5 | 9 |

先把6取出來,讓它扮演最小數

當前最小數6與其它數一一進行比較,發現更小數就交換角色

當前最小數6與2比較,發現更小數,交換角色,此時最小數是2,接下來2與剩餘數字比較

當前最小數2與4比較,不動

當前最小數2與1比較,發現更小數,交換角色,此時最小數是1,接下來1與剩餘數字比較

當前最小數1與5比較,不動

當前最小數1與9比較,不動,到達末尾

當前最小數1與當前首位數字進行位置交換,如下所示

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

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

完成一趟排序,其餘步驟類似

static void selection_sort(int unsorted)

}if (min_index != i)}}

static void main(string args)

;selection_sort(x);

foreach (var item in x)

console.readline();

}

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

原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。一種簡單直觀的排序演算法。例子將陣列 3,6,4,2,5,1 進行從大到小排序 排序步驟 第一趟找到最小數1,放到最前邊...

排序 選擇排序 選擇排序 堆排序

寫在前面 上傳github交換排序選擇排序 堆排序 選擇排序 顧名思義,我們就可以猜到,它是原則合適的元素放到合適的位置 從圖中,我們可以得到 1.用第乙個元素,和其他所有的元素進行比較,找出最小的,然後進行交換 2.然後進行,資料的遞增 3.直到資料全部有序 void selectsort int...

選擇排序 直接選擇排序

演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...