C++程式實現排序陣列


排序陣列是一個陣列,其中每個元素都按照某種順序排序,例如數字順序、字母順序等。有很多演算法可以對數字陣列進行排序,例如氣泡排序插入排序選擇排序歸併排序快速排序堆排序等。下面將詳細介紹使用選擇排序對陣列進行排序。

選擇排序是一種排序方法,它會產生一個排序後的陣列。它的做法是重複查詢陣列中最小的元素,並將其與未排序部分開頭的元素交換。

下面是一個使用選擇排序實現排序陣列的程式。

示例

 線上演示

#include<iostream>
using namespace std;
void selectionSort(int a[], int n) {
   int i, j, min, temp;
   for (i = 0; i < n - 1; i++) {
      min = i;
      for (j = i + 1; j < n; j++)
      if (a[j] < a[min])
      min = j;
      temp = a[i];
      a[i] = a[min];
      a[min] = temp;
   }
}
int main() {
   int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
   int n = sizeof(a)/ sizeof(a[0]);
   int i;
   cout<<"Given array is:"<<endl;
   for (i = 0; i < n; i++)
   cout<< a[i] <<" ";
   cout<<endl;
   selectionSort(a, n);
   printf("\nSorted array is: \n");
   for (i = 0; i < n; i++)
   cout<< a[i] <<" ";
   return 0;
}

輸出

Given array is:
22 91 35 78 10 8 75 99 1 67
Sorted array is:
1 8 10 22 35 67 75 78 91 99

在上面的程式中,`selectionSort()`是一個使用選擇排序對陣列`a[]`進行排序的函式。`selectionSort()`中有兩個`for`迴圈。在外層`for`迴圈的每次迭代中,都會找到`i`之後剩餘陣列中的最小元素,然後將其與當前位於`i`處的元素交換。重複此操作直到陣列排序完成。如下所示。

void selectionSort(int a[], int n) {
   int i, j, min, temp;
   for (i = 0; i < n - 1; i++) {
      min = i;
      for (j = i + 1; j < n; j++)
      if (a[j] < a[min])
      min = j;
      temp = a[i];
      a[i] = a[min];
      a[min] = temp;
   }
}

在`main()`函式中,定義了陣列`a[]`。然後,呼叫函式`selectionSort()`,傳入陣列`a[]`及其大小`n`。最後,顯示排序後的陣列。如下所示。

int main() {
   int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
   int n = sizeof(a)/ sizeof(a[0]);
   int i;
   cout<<"Given array is:"<<endl;
   for (i = 0; i < n; i++)
   cout<< a[i] <<" ";
   cout<<endl;
   selectionSort(a, n);
   printf("\nSorted array is: \n");
   for (i = 0; i < n; i++)
   cout<< a[i] <<" ";
   return 0;
}

更新於:2023年9月14日

27K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.