C語言選擇排序程式?


選擇排序是一種簡單排序演算法,它透過查詢陣列中最小的數字並將它放置到第一個位置來工作。接下來遍歷的陣列將從放置最小數字的位置的下一個索引開始。

讓我們舉個例子來更清楚地說明這個概念。

我們有一個數組 {6, 3, 8, 12, 9},在這個陣列中,最小的元素是 3。所以我們將 3 放置在第一個位置,之後陣列將看起來像 {3, 6, 8, 12, 9}。現在我們將再次找到最小的數字,但這次我們不會在搜尋中考慮 3,因為它已經在正確的位置。找到下一個最小的元素 6,建立一個將 6 放置在第二個位置的陣列,然後再次搜尋陣列,直到陣列排序完畢。

選擇排序演算法的工作原理:

選擇排序演算法遵循以下步驟:

讓我們取一個數組 {20, 12, 23, 55, 21}

  • 將陣列的第一個元素設定為最小值。

    最小值 = 20

  • 將最小值與下一個元素比較,如果它小於最小值,則將此元素賦值為最小值。一直執行到陣列的末尾。

    與 12 比較:20 > 12,最小值 = 12

    與 23 比較:12 < 23,最小值 = 12

    與 55 比較:12 < 55,最小值 = 12

    與 21 比較:12 < 21,最小值 = 12

  • 將最小值放在陣列的第一個位置(索引 0)。

    陣列 = {12, 20, 23, 55, 21}

  • 對於下一次迭代,從第一個未排序的元素開始排序,即最小值所在位置的下一個元素。

    陣列 = {12, 20, 23, 55, 21}

    搜尋從 20 開始,這是最小值所在位置的下一個元素。

    迭代 2

    最小值 = 20

    與 23 比較:20 < 23,最小值 = 20

    與 55 比較:20 < 55,最小值 = 20

    與 21 比較:20 < 21,最小值 = 20

    最小值已到位,無需更改。

    陣列 = {12, 20, 23, 55, 21}

    迭代 3

    最小值 = 23。

    與 55 比較:23 < 55,最小值 = 23

    與 21 比較:23 > 21,最小值 = 21

    最小值移動到索引 = 2

    陣列 = {12, 20, 21, 55, 23}

    迭代 4

    最小值 = 55

    與 23 比較:23 < 55,最小值 = 23

    最小值移動到索引 3,陣列 = {12, 20, 21, 23, 55}

示例

#include <stdio.h>
int main() {
   int arr[10]={6,12,0,18,11,99,55,45,34,2};
   int n=10;
   int i, j, position, swap;
   for (i = 0; i < (n - 1); i++) {
      position = i;
      for (j = i + 1; j < n; j++) {
         if (arr[position] > arr[j])
            position = j;
      }
      if (position != i) {
         swap = arr[i];
         arr[i] = arr[position];
         arr[position] = swap;
      }
   }
   for (i = 0; i < n; i++)
      printf("%d\t", arr[i]);
   return 0;
}

輸出

0 2 6 11 12 18 34 45 55 99

更新於:2023年9月2日

92K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告