sort函数 排序 头文件 #include<algorithm>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp1(int a,int b)
{return a>b;}//升序排列
bool cmp2(int a,int b)
{return a<b;}//降序排列
int main()
{
int n,i,s[100];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&s[i]);
sort(s,s+n,cmp1);
for(i=0;i<n;i++)
printf("%d
",s[i]);
printf("\n");
sort(s,s+n,cmp2);
for(i=0;i<n;i++)
printf("%d
",s[i]);printf("\n");
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp1(char a,char b)
{
return a>b; //升序排列
}
bool cmp2(char a,char b)
{
return a<b;
//降序排列
}
int main()
{
int n,i;
char s[100];
while(scanf("%d",&n)!=EOF)
{
getchar();
for(i=0;i<n;i++)
scanf("%c",&s[i]);
sort(s,s+n,cmp1);
for(i=0;i<n;i++)
printf("%c
",s[i]);
printf("\n");
sort(s,s+n,cmp2);
for(i=0;i<n;i++)
printf("%c
",s[i]);printf("\n");
}
return 0;
}
C++里实现对string数组的排序
方法一:(string本身就是个容器)
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
void main()
{
string strArray[2] = { "hello", "abc" };
sort(strArray, strArray+2); //
排序的起始地址和结束地址后一位
for (int i = 0; i < 2; i++)
{
cout <<
strArray[i] << endl;
}
}
方法二:将字符串都放在vector里
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string>
strArray ;
string str[4] = {"hello, world!", "welcome to
cpp.", "effective c++", "exceptional c++"};
for(int i = 0; i<4; i++)
strArray.push_back(str[i]); //依次存入vector
strArray
sort(strArray.begin(), strArray.end());
vector<string>::iterator
st;
for(st = strArray.begin(); st != strArray.end();
st++)
cout<<*st<<endl;
//用iterator实现,也可用cout<<strArray.at(i)实现
system("pause");
return 0;
}
qort函数
#include<iostream>
#include<algorithm>
using namespace std;
int compare(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}
int main()
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<10;i++)
cout<<a[i];
cout<<endl;
qsort((void *)a,10,sizeof(int),compare);
for(i=0;i<10;i++)
cout<<a[i];
cout<<endl;
return 0;
}
qort函数对字符串排序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[100][100];
int i,n;
int cmp(const void *a,const void *b)
{
return(strcmp((char*)a,(char*)b));
}
int main()
{
while(scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%s",s[i]);
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++)
printf("%s\n",s[i]);
}
return(0);
}
一、对int类型数组排序
Sample:
#include<stdio.h>
#include<stdlib.h>
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
//强制转换类型
}
int main()
{
int n,i,s[100];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&s[i]);
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++)
printf("%d
",s[i]);
}
return 0;
}
二、对char类型数组排序(同int类型)
//Sample:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp( const void *a , const void *b )
{
return *(char *)a - *(char *)b;
}
int main()
{
int n,i;
char word[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",word);
int t=strlen(word);
qsort(word,t,sizeof(word[0]),cmp);
printf("%s\n",word);
}
return 0;
}
三、对double类型数组排序(特别要注意)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b
? 1 : -1;
}
int main()
{
double in[100];
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%lf",&in[i]);
qsort(in,n,sizeof(in[0]),cmp);
for(i=0;i<n;i++)
printf("%.1lf
",in[i]);
printf("\n");
}
return 0;
}