C++ 中的排序


在本節中我們將學習如何在 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;
}

更新於: 2019-07-30

1K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

入門
廣告
© . All rights reserved.