1. 程式人生 > 其它 >sort快速排序

sort快速排序

技術標籤:c++

sort快速排序


使用sort必須要有相應的標頭檔案
#include<algorithm>

sort(begin,end)//直接用的話是按照升序排列,end指向最後一個元素的下一個位置
int a[n]
sort(a,a+n)
sort(a,a+n,cmp)
cmp為一個函式控制sort是升序還是降序排列
bool cmp(int a,int b)
{
  return a < b  升序排列
  //return a > b  降序排列
}

sort可完成對字串、字元的排列

字元
// 
#include<iostream>
#include<algorithm> using namespace std; int main() { string a = "ddccaa"; sort(a.begin(),a.end()); cout << a; return 0; }

輸出結果
在這裡插入圖片描述

字串
// 
#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	string a[5];
	for(int i=0;i<5;i++)
	cin>>a[
i]; sort(a,a+5); cout<<endl; for(int i=0;i<5;i++) cout<<a[i]<<endl; return 0; }

sort也可完成對結構體的排列(靈活運用)

題目:洛谷P1104 生日:https://www.luogu.com.cn/problem/P1104
//
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 105;
int n;

	struct stu{
		string name;
int year,month,day; int shu; }a[N]; bool cmp(stu a,stu b) { if(a.year!=b.year) return a.year < b.year; if(a.month!=b.month) return a.month < b.month; if(a.day!=b.day) return a.day < b.day; return a.shu > b.shu; } int main() { cin >> n; for(int i=0;i<n;i++) { cin >> a[i].name >> a[i].year >> a[i].month >> a[i].day; a[i].shu=i; } sort(a,a+n,cmp); for(int i=0;i<n;i++) cout << a[i].name << endl; return 0; }