C++中sort函数的用法汇总

感情迁移 提交于 2020-01-22 03:25:32

最近写题的时候总会在贪心算法里面用到C++函数sort函数排序的方法,故在此总结一下
sort函数本身是对一段连续的存贮单元的数据进行排序的函数,其排序的元素可以是数值,亦可以是一组数据(结构体),其算法比正常的冒泡排序法,选择排序法,希尔排序要简便,故对于算法的简化大有帮助
1.将一段数据按升序排列

#include<cstdio>
#include<algorithm>  //sort函数储存在C++的algorithm函数库中 
using namespace std;
int main()
{
 int a[10]={2,3,4,1,2,67,23,24,156,678};
 int i;
 sort(a,a+10);   //对一段连续的存储空间进行排序 
 for(i=0;i<10;i++)
 printf("%d ",a[i]);
 printf("\n");
 return 0;
}

2.将一段数据按照降序排列

#include<cstdio>
#include<algorithm>  //sort函数储存在C++的algorithm函数库中
using namespace std; 
bool compare(int a,int b)
{
 return a>b;
}
int main()
{
 int a[10]={2,3,4,1,2,67,23,24,156,678};
 int i;
 sort(a,a+10,compare);   //对一段连续的存储空间进行排序 
 for(i=0;i<10;i++)
 printf("%d ",a[i]);
 printf("\n");
 return 0;
}

3.也可以按照结构体内的数据的大小将结构体的元素进行排序
(升序)

#include<cstdio>
#include<algorithm>  //sort函数储存在C++的algorithm函数库中 
using namespace std;
struct homework
{
 int data1,data2;
}work[10];
bool compare(homework a,homework b)
{
 if(a.data1!=b.data1)
 return a.data1<b.data1;
 else if(a.data2!=b.data2)
 return a.data2<b.data2;//data1相同了按照data2比较
}
int main()
{
 int i;
 for(i=0;i<10;i++)
 scanf("%d",&work[i].data1);
 for(i=0;i<10;i++)
 scanf("%d",&work[i].data2);
 sort(work,work+10,compare);   //对一段连续的存储空间进行排序 
 for(i=0;i<10;i++)
 printf("%d %d\n",work[i].data1,work[i].data2);
 return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!