STL_qsort(對int,char,vector,結構體排序舉例)
阿新 • • 發佈:2019-01-31
#include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <cstring> using namespace std; int cmp_int(const void *a, const void *b) { return *(int *)a - *(int *)b; } bool cmp_stl(int a, int b) { return a > b; } int cmp_char( const void *a , const void *b ) { return *(char *)a - *(char *)b ; } void print(int *a,int n) { for(int i=0; i<n; i++) { cout << a[i] << " "; } cout << endl; } bool qsort_int() { cout << "qsort_int:" << endl; int num[12]; cout << "請輸入十個數: "; for(int i = 0; i < 10; i++) { scanf("%d", &num[i] ); } qsort(num, 10, sizeof(num[0]), cmp_int ); for(int i = 0; i < 10; i++) { cout << num[i] << ' '; } cout << endl; return true; } void qsort_stl() { cout << "qsort_stl: " << endl; vector<int> v; for(int i = 0; i < 5; i++) { v.push_back(i); } for(int i = 10; i >= 5; i--) { v.push_back(i); } cout << "befor: " ; for(int i = 0; i <= 10; i++) { cout << v[i] << ' '; } cout << endl; cout << "after: "; sort(v.begin(), v.end()); for(int i = 0; i <= 10; i++) { cout << v[i] << ' '; } cout << endl; cout << "agagin"; sort(v.begin(), v.end(), cmp_stl); for(int i = 0; i <= 10; i++) { cout << v[i] << ' '; } cout << endl; } void qsort_char() { cout << "qsort_char: " << endl; cout << "請輸入一個字串:" ; int len = 0; char word[100]; cin >> word; len = strlen(word); qsort(word, len , sizeof(char), cmp_char); //將len替換為100即出錯。 puts(word); } int main() { qsort_int(); qsort_stl(); qsort_char(); return 0; }