调用快排函数总结

来源:互联网 发布:神户大学 知乎 编辑:程序博客网 时间:2024/05/16 08:56
快速排序


头文件:#include<stdlib.h>
函数:qsort(首地址,数目,单个元素字节大小,方法(升序/降序));

实例

//【数组】#include<iostream>#include<stdlib.h>using namespace std;int order(const void *a,const void *b){return *(int*)a - *(int*)b;//升序}int reorder(const void *a,const void *b){return *(int *)b - *(int *)a;//降序}void main(){int s[8]={2,5,3,4,8,6,3,4};qsort(s,8,sizeof(s[0]),order);for(int i=0;i<8;i++){cout<<s[i]<<' ';}}/*运行结果:2 3 3 4 4 5 6 8 */

//【字符】#include<iostream>#include<stdlib.h>#include<string.h>using namespace std;int order(const void *a,const void *b){return *(char *)a - *(char *)b;//升序}int reorder(const void *a,const void *b){return *(char *)b - *(char *)a;//降序}void main(){char s[9]="dsfgkide";qsort(s,strlen(s),sizeof(s[0]),order);cout<<s<<endl;}/*运行结果:ddefgiks*/

//【字符串】#include<iostream>#include<stdlib.h>#include<string.h>using namespace std;int order(const void *a,const void *b){return strcmp((char*)a,(char*)b);//升序}int reorder(const void *a,const void *b){return strcmp((char*)b,(char*)a);//降序}void main(){char s[][12]={"sky is grey","cold","nisjid","i jidu"};qsort(s,4,sizeof(s[0]),order);for(int i=0;i<4;i++)cout<<s[i]<<endl;}/*运行结果:coldi jidunisjidsky is grey*/

//【结构体】#include<iostream>#include<stdlib.h>using namespace std;struct student{int a;char b;}stu[5]={{5,'e'},{1,'a'},{2,'b'},{4,'d'},{3,'c'}};int order(const void *a,const void *b){return ((struct student*)a)->a - ((struct student*)b)->a;//升序}int reorder(const void *a,const void *b){return ((struct student*)b)->a - ((struct student*)a)->a;//降序}void main(){qsort(stu,5,sizeof(stu[0]),order);for(int i=0;i<5;i++)cout<<stu[i].a<<' '<<stu[i].b<<endl;}/*运行结果:1 a2 b3 c4 d5 e*/

const void*是一个空型指针,在使用的过程中,都是通过强制转换成实际的数据类型。


原创粉丝点击