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; }