STL(标准函数)

头文件都是:#include<algorithm>

qsort篇

 qsort(a,len,sizeof(type),mycmp)

//注释

a:待排序的数组地址

len:待排序的数组的长度

type:待排序的数组元素的类型

mycmp:自定义的排序函数

 1 /****************一维数组类比较函数************
 2 int mycmp(const void *a,const void *b)
 3 {
 4  return *(int *)a - *(int *)b;
 5 }
 6 //注 char、float、double型数组时
 7 //只需将return中的int改成相应的类型即可。
 8 //(const void *a,const void *b)必须照写
 9 ********************************************/
10 
11 
12 /****************字符串类比较函数(二维)************
13 int mycmp(const void *a,const void *b)
14 {
15  return strcmp((char *)a,(char *)b);
16 }
17 ************************************************/
18 /*************二维数组整体排序比较函数******
19 int mycmp(const void *a,const void *b)
20 {
21  return *(int *)a-*(int *)b;
22  //注 char、float、double型数组时
23 //只需将return中的int改成相应的类型即可。
24 //(const void *a,const void *b)必须照写
25 }
26 ****************************************/
27 /*************一维结构体排序比较函数******
28     struct  node
29     {
30      int a;
31     };
32 int mycmp(const void *c,const void *b)
33 {
34  return (*(node *)c).a-(*(node *)b).a;
35 }
36 *********************************************/
37 /*****************二维结构体排序*********************
38 struct node 
39 {
40  int data;
41  char str[5];
42 };
43 int mycmp(const void *a,const void *b)
44 {
45   if((*(node *)a).data!=(*(node *)b).data)
46       return  (*(node *)a).data -(*(node *)b).data ;
47   return strcmp((*(node *)a).str,(*(node *)b).str );
48  
49 }
50 *******************************************************/
51 
52 int main()
53 {
54     //qsort篇
55   /*************一维数组类**************
56     int a[7]={2,1,3,5,4,7,6},i;
57      qsort(a,7,sizeof(int),mycmp);
58      for(i=0;i<7;i++)
59      cout<<a[i]<< "  ";
60      cout<<endl;
61   **************************************/
62 
63   
64   
65   /**************字符串(二维)******************
66     char s[5][4]={"aa","dd","cc","ee","bb"};
67      qsort(s,5,sizeof(s[0]),mycmp);
68      for(int i=0;i<5;i++)
69          cout<<s[i]<<endl;
70 ***********************************************/
71 /**************二维数组******************    
72     int a[7][2]={{2,2},{1,9},{3,3},{5,5},{4,4},{7,7},{6,6}},i;
73      qsort(a,7,sizeof(a[0]),mycmp);//分组排序
74 //     qsort(a,14,sizeof(int),mycmp);//全部元素一起排序,mycmp为一维int
75      for(i=0;i<7;i++)
76          for(int j=0;j<2;j++)
77      cout<<a[i][j]<< "  ";
78      cout<<endl;
79 *************************************************/
80 /***********************一维结构体排序*************
81 node b[5];
82 b[0].a=5;
83 b[1].a=3;
84 b[2].a=2;
85 b[3].a=4;
86 b[4].a=1;
87 qsort(b,5,sizeof(node),mycmp);
88 for(int i=0;i<5;i++)
89 cout<<b[i].a <<endl;
90 *************************************************/
91  
92 /*******************二维结构体排序****************
93     node s[5]={{5,"dd"},{3,"dd"},{5,"cc"},{1,"aa"},{2,"bb"}};    
94  qsort(s,5,sizeof(node),mycmp);
95  for(int i=0;i<5;i++)
96      cout<<s[i].data<<" "<<s[i].str<<endl;  
97 *****************************************/
原文地址:https://www.cnblogs.com/sxmcACM/p/3031103.html