- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- void print(int &elem){ //有無&均可
- cout << elem << " ";
- }
- //qsprt必須用這種格式定義比較函數,像bj定義qsort傳入參數會出錯
- // *和(int *)是同一優先級運算符,但結合方向是從右向左
- int cmp(const void *a, const void *b){
- return *(int *)a - *(int *)b;
- }
- int bj(int a, int b){
- return a > b;
- }
- int main(){
- int a[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
- //algorithm頭文件for_each( , , )函數用法
- for_each(a, a+10, print);
- cout << endl;
- //快排模板函數,數組下標從0開始,即排序下標爲0-9的元素
- qsort(a, 10, sizeof(a[0]), cmp);
- for_each(a, a+10, print);
- cout << endl;
- //algorithm中的swap函數
- char x = 'X', y = 'Y';
- swap(x, y);
- printf("x = %c, y = %c\n", x, y);
- char str[] = "abcdefgh";
- //algorithm中的反轉函數
- reverse(str+2,str+7); //前閉後開
- cout << str << endl;
- int aa[] = {0, 3, 9, 1, 4, 8, 5, 2, 6, 7};
- for_each(aa, aa+10, print);
- cout << endl;
- //qsort,sort時間複雜度都是O(n*log(n)),但實際中sort速度一般比qsort快!!
- // sort(aa, aa+10);
- //不傳入第三個參數默認sort爲升序排序
- sort(aa, aa+10, bj);
- //傳入參數從大到小排序,且sort第三個參數不能用cmp函數
- for_each(aa, aa+10, print);
- cout << endl << max(66,88) << endl << min(66,88) << endl;
- //max和min函數
- //二路歸併,頭文件algorithm
- int ak[] = {1, 9, 5, 4, 7};
- int ka[] = {3, 6, 2, 8, 0};
- int kk[15];
- sort(ak, ak+5);
- sort(ka, ka+5);
- merge(ak, ak+5, ka, ka+5, &kk[1]);
- for_each(ak, ak+5, print);
- cout << endl;
- for_each(ka, ka+5, print);
- cout << endl;
- for_each(kk+1, kk+11, print);
- cout << endl;
- return 0;
- }
C++<algorithm>能用到的幾個內置函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.