我在网上找了一些stl的sort函数的用法,有些用法怎么不能实现,请高手介绍一下sort的用法。
sort按降序排列如何实现?是 sort(A,1,'descend')吗?
如A是二维数组,如何实现按行排序,是sort(A,2),听说参数1是列排列,参数2是行排列。
上面两个我怎么不能通过编译啊?
使ç¨sort()å½æ°å¨åç®åæåºç®æ³æ¶åæ¯é常好çæ¹æ³ã
sort(buffer,buffer+n,cmp); bufferä¸ºå¾ æåºæ°ç»çé¦å°åï¼buffer+nä¸ºå¾ æåºæ°ç»çæåä¸ä¸ªæ°æ®çå°åãcmp为èªå®ä¹çæåºè§åå½æ°ï¼å¯çç¥ã
sort()å½æ°é»è®¤æ¯ä¸ºååºæåï¼å 许æåºç±»åå æ¬æ°å¼/å符/å符串ãsort()ä¹å¯ä»¥å¯¹ç»æä½è¿è¡æåºã
cmpå½æ°çè¿åå¼ä¸ºtrueåfalseæ1å0ï¼è¥ä¸ºtrue/1ï¼åsort()å½æ°ä¸ºååºæåï¼è¥ä¸ºfalse/0ï¼åsort()å½æ°ä¸ºéåºæåã
ä¸é¢ä¸ºä¸ä¸ªæ¾åºå¥¶ç产奶éä¸é´å¼çå°ç¨åºï¼ä¸¾ä¾è¯´æï¼
#include "iostream"
#include "algorithm"
using namespace std;
//奶çç»æç±»
typedef struct
{
int milk;
int num;
}COW;
COW cow[100];
bool cmp(COW A, COW B);
//主å½æ°
void main()
{
int n;
cout<<"请è¾å
¥å¥¶ççæ°éï¼ ";
cin>>n;
for(int i=1;i<=n; i++)
{
cout<<"请è¾å
¥å¥¶ç"<<i<<"ç产奶éï¼ ";
cin>>cow[i-1].milk;
cow[i-1].num = i;
}
sort(cow,cow+n,cmp); //æåºæ¯è¾
cout<<"ä¸é´å¥¶ç产奶é为: "<<cow[n/2].milk<<endl;
system("pause");
}
//cmpæåºè§åå½æ°
bool cmp(COW A, COW B)
{
if (A.milk < B.milk) //æ产奶éç±å°å°å¤§æåº
{
return true;
}
else if (A.milk == B.milk)
{
if (A.num > B.num) //产奶éç¸åæ¶ï¼æåºå·ç±å¤§å°å°æåº
{
return true;
}
return false;
}
else
{
return false;
}
}