1. 程式人生 > 程式設計 >C++實現選擇排序(selectionSort)

C++實現選擇排序(selectionSort)

本文例項為大家分享了Android九宮格圖片展示的具體程式碼,供大家參考,具體內容如下

一、思路

每次取剩下沒排序的數中的最小數,然後,填到對應位置。(可以使用a[0]位置作為暫存單元)

如下:

C++實現選擇排序(selectionSort)

二、實現程式

#include <iostream>
using namespace std;
 
const int maxSize = 100;
 
template<class T>
void SelectSort(T arr[],int n); // 選擇排序
 
int main(int argc,const char * argv[]) {
 int i,n,arr[maxSize];
 
 cout << "請輸入要排序的數的個數:";
 cin >> n;
 cout << "請輸入要排序的數:";
 for(i = 1; i <= n; i++) // arr[0]不存放值,用來做暫存單元
  cin >> arr[i];
 cout << "排序前:" << endl;
 for(i = 1; i <= n; i++)
  cout << arr[i] << " ";
 cout << endl;
 SelectSort(arr,n);
 cout << "排序後:" << endl;
 for(i = 1; i <= n; i++)
  cout << arr[i] << " ";
 cout << endl;
 return 0;
}
 
// 直接選擇排序
template <class T>
void SelectSort(T arr[],int n) {
 int i,j,pos;
 
 for(i = 1; i < n; i++) { // 共作n-1趟選擇排序
  pos = i; // 儲存最小數的位置
  for(j = i; j <= n; j++) { // 找比arr[i]更小的值
   if(arr[j] < arr[pos]) {
    pos = j; // 指向更小的數的位置
   }
  }
  if(pos != i) { // 找到了更小的值,就交換位置
   arr[0] = arr[i]; // arr[0]作為暫存單元
   arr[i] = arr[pos];
   arr[pos] = arr[0];
  }
 } // for
} // SelectSort

測試資料:

7

20 12 50 70 2 8 40

測試結果:

C++實現選擇排序(selectionSort)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。