您的位置:首页 > 其它

STL_qsort(对int,char,vector,结构体排序举例)

2013-02-20 19:46 309 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: