#include<iostream>
#include<algorithm>
using namespace std;
struct student
{
int sno;
char name[20];
};
//qsort比较器
int com(const void *a, const void *b)//qsort基本比较器
{//void指针必须先进行强制类型转换
return *((int *)a) - *((int *)b);
}
int com1(const void *a, const void *b)//student按照姓名排序
{
return strcmp(((student *)a)->name ,((student *)b)->name);
}
//sort比较器
template<typename T>
bool compare(T &a, T &b)//sort基本比较器
{
return a > b;
}
bool compare1(student &a, student &b)//student按照姓名排序
{
return a.name>b.name;
}
void show(student a[], int num)//显示结构体
{
int t=1;
for (int i = 0; i < num; i++)
{
cout << a[i].sno << " " << a[i].name;
cout << endl;
}
}
void showarry(int a[], int num) {//显示数组
for (int i = 0; i < 3; i++)
{
cout << a[i] << " ";
}
}
int main() {
int a[3] = { 2,4,1 };
cout << "基本数组的排序:"<<endl;
cout << "使用qsort排序结果:" << endl;
qsort(a, 3, sizeof(int), com);
showarry(a, 3);
cout << endl;
cout << "使用sort排序结果:" << endl;
sort(a,a + 3, compare<int>);
showarry(a, 3);
cout << endl;
cout <<"结构体排序:"<< endl;
student s[3] = { {1,"jwt"},{2,"byj"}, {3,"abc"} };
cout << "使用qsort排序结果:" << endl;
qsort(s, 3, sizeof(student), com1);
show(s, 3);
cout << "使用sort排序结果:" << endl;
sort(s, s + 3, compare1);
show(s, 3);
system("pause");
return 0;
}
C++实训--快速排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...
- C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...