排序与sort
对于一个数组,通过对数组中的元素进行交换,我们可以将数组中的元素按从大到小的或从小到大的顺序排列。当我们希望对数组中的元素进行排序时,我们可以使用C++为我们提供的工具——sort。
通过写sort(arr, arr + 5);
我们可以将arr中从开始的元素到第5个元素按从小到大的顺序排列。而如果我们写:sort(arr + i, arr + j);那么被排序的将是arr[]到arr[j-1],其他元素将保持原位置。
如果希望arr中的元素从大到小排列(或按照某一个规则进行排列),我们可以再为sort传入第三个参数——“排序方法”.
sort(arr, arr + 5, greater());
其中,greater表示“更大”的意思,表示待排序的数组中的元素类型为int,整个这行代码表示让一个元素类型为整数的数组从大到小排序。
接下来,我们在之后再写一个sort,在这个sort 中,我们传入第三个参数——“排序方法”。
首先请在 int main()之前加上:
bool cmp(int x,int y){
return x>y;
}
并在sort第三个参数中传入cmp .sort函数是系统定义好的,可以直接支持函数地址作为参数。在 cout<< endl的下一行写:
sort(arr, arr + 10, cmp);
并在排序后依次进行输出:
for (int t=0;i<10;i++){
cout<<arr[i]<<" ";
}
cout<< endl;
视频链接:https://www.bilibili.com/video/BV1jE411g76D
基础练习
1、问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,A[200];
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]<<" ";
}
return 0;
}
2、练习题
首先将10个整数读入到了数组 ,然后将其从小到大进行排序并输出,又将其从大到小进行排序并输出
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int arr[10];
for(int i=0;i<10;i++)
{
cin>>arr[i];
}
sort(arr,arr+10);
for(int i=0;i<10;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
sort(arr,arr+10,greater<int>());
for(int i=0;i<10;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}