1.sort简介
sort使用:需要头文件
#include<algorithm>
using namespace std;
sort作用 : 排序
实现原理:对朴素快排的不稳定性
进行了优化,结合了插入排序
和堆排序
。系统会自动根据数据形式和数据量来选择最优的排序方式。
具体函数实现,请参考:http://www.cnblogs.com/fengcc/p/5256337.html
2.sort用法
2.1 数组排序
// 头文件
#include<algorithm>
using namespace std;
//情况一:数组排序
// 数组升序排序
int a[101];
sort(a, a + 101);
// 如果数组a的下标从一开始才有意义就应该 sort(a + 1, a + 1 + 101);
// 数组降序排序
bool cmp1(int a,int b) // 首先需要定义一个比较函数(int为数组数据类型)
{
return a > b; // 降序排列
//return a < b; // 默认的升序排列
}
sort(a, a + 101, cmp);
例子:输入n个数,将n个数从小到大输出
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[10], n;
scanf("%d", &n);
for(int i = 0; i < n; i ++)
scanf("%d", &a[i]);
sort(a, a + n);
for(int i = 0; i < n; i ++)
printf("%d ", a[i]);
return 0;
}
2.2 结构体排序
// 头文件
#include<algorithm>
using namespace std;
// 情况二: 结构体排序
Student Stu[100];
bool cmp2(Student a,Student b)
{
return a.id>b.id;//按照学号降序排列
//return a.id<b.id;//按照学号升序排列
}
sort(Stu,Stu+100,cmp2);
栗子:将n个学生按学号降序排列
#include <stdio.h>
#include <algorithm>
using namespace std;
struct Student
{
int id;
char name[22];
} stu[100];
bool cmp(Student a, Student b)
{
return a.id > b.id;
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i ++)
scanf("%s %d", &stu[i].name, &stu[i].id);
sort(stu, stu + n, cmp);
for(int i = 0; i < n; i ++)
printf("%s %d\n", stu[i].name, stu[i].id);
return 0;
}