2016年1月7日 星期四

程式記事:C++ STL, sort (排序)的使用方法與 sort 反向

這次寫資料結構(快要被當掉)的加分 UVA 題目時,剛好用到一些實用的 sort 用法,趁機會記錄起來備忘。



需先 #include <algorithm>
需先 #include <algorithm>
需先 #include <algorithm>

很重要所以要講三次。

用法1. 整體排序(小到大)

sort( 陣列名,  陣列名 + 陣列長度 );

int array[8] = {2 , 1, -1 , 0 , 6 , -5, 8 , -4};
sort(array, array + 8);   // 排序

原先陣列:array[8] = {2, 1, -1, 0, 6, -5, 8, -4};
執行後陣列:array[8] = {-5-4-10, 1, 2, 6, 8};





用法2. 部分排序

sort(陣列名,  陣列名 + (從前方數來須排列的數量));

int array[8] = {2, 1, -1, 0, 6, -5, 8, -4};
sort(array, array + 4);   // 排序前面四位

原先陣列:array[8] = {2, 1, -1, 0, 6, -5, 8, -4};
執行後陣列:array[8] = {-1, 0, 1, 2, 6, -5, 8, -4};



用法3. 整體排序(大到小)

sort(陣列名,  陣列名 + 陣列長度, greater<int>());

原先陣列:array[8] = {2, 1, -1, 0, 6, -5, 8, -4};
執行後陣列:array[8] = {8, 6, 2, 10-1-4-5};


完整程式碼:

#include <iostream>
#include <algorithm>
using namespace std;
void displayArray(int array[]);

int main() {
 int arr[5] = {1, 5, 0, -3, 10};
 displayArray(arr);
 // 陣列 arr 內容 1 5 0 -3 10
 sort(arr, arr + 3);  // 將 arr 部分排序
 displayArray(arr);
 // 陣列 arr 內容 0 1 5 -3 10

 sort(arr, arr + 5);  // 將 arr 由小排到大
 displayArray(arr);
 // 陣列 arr 內容 -3 0 1 5 10

 sort(arr, arr + 5, greater<int>()); // 將 arr 由大排到小
 displayArray(arr);
 // 陣列 arr 內容 10 5 1 0 -3

 return 0;
}



void displayArray(int array[]) { // 顯示陣列
 for (int i = 0; i < 5; i++)
  cout << array[i] << " ";

 cout << endl;

}


沒有留言:

張貼留言