C++ sort()排序

C++中的sort()函數:

sort()函數在頭文件algorithm中,也可使用萬能頭文件bits/stdc++.h

sort()可對普通數組和vector動態數組排序

sort()對普通數組排序:

int arr[10];//double, string等等都可以sort(arr,arr+10);//從小到大排序

arr: 數組地址 arr+10: 數組尾部
注意:數組長度是10,所以要+10,不是9
同理,從第二個元素排到第五個元素就是sort(arr+1,arr+5),
2-5 1-5 5-1=4
9 8 7 6 5 4 3 2 1 0 ——> 9 5 6 7 8 4 3 2 1 0 自己慢慢體會

sort()對vector動態數組排序:

vector<int>v;// double, string等等都可以sort(v.begin(),v.end());//從小到大排序

C++中使用sort()自定義cmp函數:

sort()排序默認是從小到大的,如果想從大到小排怎麼辦呢?
或者想給結構體數組排序,按照幾個不同優先級的關鍵字進行排序呢?

int cmp(int a,int b)
{
	return a>b;//從大到小排序,a<b就是從小到大排序,注意是大於小於,不帶等於
}

int main()
{
	int arr[10];//double, string等等都可以sort(arr,arr+10,cmp);//從小到大排序
}

第二種方法:sort(arr,arr+10,greater<int>());//從大到小排序

對結構體排序:

struct s{
	int id;
	int score;
}

按score從大到小排序,score相同時按id從小到大排序

int cmp(s a,s b)
{
	if(a.score==b.score)
	{
		return a.id<b.id;
}
return a.score>b.score;
} 

int main()
{
	s stu[10];sort(stu,stu+10,cmp);
}

注意:對字符數組 char [ ] 排序要用return strcmp(s1,s2)<0或>0

典型例題:

20200217訓練賽題目 L1 – 2 部分排序,L2 – 2 模擬EXCEL排序

發佈了64 篇原創文章 · 獲贊 20 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章