1.sort函数的简单使用
例如有一个a数组a[n],如果要对a数组中的元素进行排序(sort函数默认升序排列)
sort(a,a+n)即可;
用一个例子看一下具体的用法:
给定一个长度为 N的数组 a,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。
输入描述
第一行包含一个整数 N。
第二行包含 N 个整数 a1,a2,a3,....表示数组 A的元素。
输出描述
输出共两行,每行包含 N个整数,表示答案。
输入输出样例
示例 1
输入
5
1 3 2 6 5
输出
1 2 3 5 6
6 5 3 2 1
补充:给动态数组排序
例如vector<int>a;
给a排序就是sort(a.begin,a.end)
代码如下:
#include <iostream>
#include <cmath>
#include <algorithm>//sort函数的头文件
using namespace std;
bool cmp(int a,int b) //如果a<b,表示升序排列,如果a>b,表示降序排列
{
return a>b;//还有一种扩展是对结构体中的成员进行排序
}
int main()
{
int a[1000000];
int n;
cin>>n;
for (int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//先对它进行升序排列
for(int i = 0; i < n; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
sort(a,a+n,cmp);
for(int i=0; i<n; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
2.桶排序
首先,用处就是对含有相同元素的数组进行排序(题目一般会要求需要将相同的元素都输出来)。
原理: 在主函数外开一个数组,初始化为零,利用该数组的下标对应要排序的元素的大小,用该数组中的元素的大小对应相同元素的个数。
根据这个原理,可以设置一个数组,用来记录某些东西出现的个数,同时,它还有点像映射;
使用桶排序需要满足的条件:
1.需要知道进行排列的数的范围
2.数据的跨度不大(当跨度很大时效率有点低)
例题:
将 1,5,5,2,8,8,10 这七个数按照从大到小输出来
#include<iostream>
using namespace std;
int a[100];
int main()
{
int n;
cin>>n;
int max=100;//题目中数据的最大值,因为它是使用下标来表示数据的范围
for(int i=0;i<n;i++)//输入7个数
{
int t;
cin>>t;
a[t]++;
}
for(int i=0;i<max;i++)
{
for(int j=0;j<a[i];j++)//如果这个桶中的个数为零,直接跳过,不输出了
{
cout<<i<<' ';
}
}
return 0;
}
/*
7
1 5 5 2 8 8 10
*/