标签:
一、sort
1.int
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main(){ int a[]={5,4,3,2,1,0,9,8,7,6},i; sort(a,a+10);//默认升序 for(i=0;i<10;++i) printf("%d ",a[i]); printf("\n"); return 0; }
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; bool cmp(int a,int b){ return a>b;//降序 } int main(){ int a[]={5,4,3,2,1,0,9,8,7,6},i; sort(a,a+10,cmp);// for(i=0;i<10;++i) printf("%d ",a[i]); printf("\n"); return 0; }
2.char
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main(){ char a[]={‘5‘,‘4‘,‘3‘,‘2‘,‘1‘,‘0‘,‘9‘,‘8‘,‘7‘,‘6‘}; int i; sort(a,a+10);//默认升序 for(i=0;i<10;++i) printf("%c ",a[i]); printf("\n"); return 0; }
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; bool cmp(char a,char b){ return a>b;//降序 } int main(){ char a[]={‘5‘,‘4‘,‘3‘,‘2‘,‘1‘,‘0‘,‘9‘,‘8‘,‘7‘,‘6‘}; int i; sort(a,a+10,cmp);// for(i=0;i<10;++i) printf("%c ",a[i]); printf("\n"); return 0; }
3.double
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main(){ double a[]={5,4,3,2,1,0,9,8,7,6}; int i; sort(a,a+10);//默认升序 for(i=0;i<10;++i) printf("%.2f ",a[i]); printf("\n"); return 0; }
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; bool cmp(double a,double b){ return a>b;//降序(估计也有精度问题,需注意。) } int main(){ double a[]={5,4,3,2,1,0,9,8,7,6}; int i; sort(a,a+10,cmp);// for(i=0;i<10;++i) printf("%.2f ",a[i]); printf("\n"); return 0; }
4.结构体
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; struct node{ int a; int b; }a[10]; bool cmp(node a,node b){ if(a.a!=b.a)return a.a<b.a;//a升 return a.b>b.b;//b降 } int main(){ a[0].a=a[1].a=a[2].a=5; a[0].b=3;a[1].b=2;a[2].b=1; a[3].a=a[4].a=a[5].a=0; a[3].b=9;a[4].b=8;a[5].b=7; int i; sort(a,a+6,cmp);// for(i=0;i<6;++i) printf("%d %d\n",a[i].a,a[i].b); return 0; }
5.字符串
错误代码1:
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int main(){ char a[4][20]={"cccc","bbbb","bbcccc","aaaaaaa"}; int i; sort(a,a+4);//默认升序 for(i=0;i<4;++i) printf("%s\n",a[i]); return 0; }
错误代码2:
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; bool cmp(char a[],char b[]){ strcmp(a,b)>0?true:false;//降序 } int main(){ char a[4][20]={"cccc","bbbb","bbcccc","aaaaaaa"}; int i; sort(a,a+4,cmp);// for(i=0;i<4;++i) printf("%s\n",a[i]); return 0; }
二、qsort
头文件:stdlib.h
1.int
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;//升序 } int main(){ int a[]={5,4,3,2,1,0,9,8,7,6},i; qsort(a,10,sizeof(int),cmp); for(i=0;i<10;++i) printf("%d ",a[i]); printf("\n"); return 0; }
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; int cmp(const void *a,const void *b){ //return *(int *)a-*(int *)b;//升序 //与下面等价 int *A=(int *)a;//强制转化 int *B=(int *)b; return *A-*B; } int main(){ int a[]={5,4,3,2,1,0,9,8,7,6},i; qsort(a,10,sizeof(int),cmp); for(i=0;i<10;++i) printf("%d ",a[i]); printf("\n"); return 0; }
2.char
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; int cmp(const void *a,const void *b){ return *(char *)a-*(char *)b;//升序 } int main(){ char a[]={‘5‘,‘4‘,‘3‘,‘2‘,‘1‘,‘0‘,‘9‘,‘8‘,‘7‘,‘6‘}; int i; qsort(a,10,sizeof(char),cmp); for(i=0;i<10;++i) printf("%c ",a[i]); printf("\n"); return 0; }
3.double
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; int cmp(const void *a,const void *b){ return *(double *)a>*(double *)b?1:-1;//升序 } int main(){ double a[]={5,4,3,2,1,0,9,8,7,6}; int i; qsort(a,10,sizeof(double),cmp); for(i=0;i<10;++i) printf("%.2f ",a[i]); printf("\n"); return 0; }
4.结构体
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; struct node{ int a; int b; }a[10]; int cmp(const void *a,const void *b){ node *A=(node *)a; node *B=(node *)b; if(A->a!=B->a)return A->a-B->a;//a升 return B->b-A->b;//b降 } int main(){ a[0].a=a[1].a=a[2].a=5; a[0].b=3;a[1].b=2;a[2].b=1; a[3].a=a[4].a=a[5].a=0; a[3].b=9;a[4].b=8;a[5].b=7; int i; qsort(a,6,sizeof(node),cmp); for(i=0;i<6;++i) printf("%d %d\n",a[i].a,a[i].b); return 0; }
5.字符串
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; int cmp(const void *a,const void *b){ return strcmp((char *)a,(char *)b);//升序 } int main(){ char a[4][20]={"cccc","bbbb","bbcccc","aaaaaaa"}; int i; qsort(a,4,sizeof(a[0]),cmp); for(i=0;i<4;++i) printf("%s\n",a[i]); return 0; }
标签:
原文地址:http://www.cnblogs.com/bofengyu/p/4727046.html