模板庫排序函式呼叫方法
阿新 • • 發佈:2018-12-13
#include<iostream> #include<cstring> #include<stdio.h> #include<stdlib.h> // qsort head file #include<algorithm> // sort head file using namespace std; int cmp(const void *a, const void *b) { //return (*(int *)a-*(int *)b); // 升序排列 return (*(int *)b-*(int *)a); // 降序排列 } bool compare(int a, int b) { //return a < b; // 升序排列 return a > b; // 降序排列 } int main() { //1 定義變數 int n; int a[1000]; memset(a, 0, sizeof(a)); //2 輸入數列 cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } //3 輸出排序前數列 for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; cout << endl; //4 模板庫快速排序 qsort(a, n, sizeof(a[0]), cmp); sort(a, a+n, compare); //5 輸出排序後數列 for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; } // 排序總結: // 時間複雜度:插入排序、氣泡排序、選擇排序:O(n2) // 時間複雜度:快速排序、堆排序、歸併排序: O(nlog2n) // 時間複雜度:桶排序: O(n) // 適用場景: // 快速排序:是目前基於比較的內部排序中最好的方法,當待排序的關鍵字是隨機分佈時,快速排序的平均時間最短。 // 桶排序: 當待排序的記錄的關鍵字在一個明顯有限範圍內時,且空間允許,建議使用桶排序。 // 氣泡排序:當參加排序的序列區域性或整體有序時,能達到較快的排序速度。 // 選擇排序:當 n 較小,選擇排序最容易理解。