使用qsort的方法
qsort使用 |
qsort函数是ANSIC标准中提供的,其声明在stdlib.h文件中,具体内容为: voidqsort(void*base,size_tnelem,size_twidth,int(*fcmp)(constvoid*,constvoid*)); 其中: *base为要排序的数组 nelem为要排序数组的长度 width为数组元素的大小(以字节为单位) (*fcmp)(constvoid*a,constvoid*b)为判断大小函数的指针,这个函数需要程序员自己定义, 如果a>b,函数返回1;a<b,函数返回-1;a=b,函数返回0 例:字符串排序 #i nclude<stdio.h> #i nclude<stdlib.h> #i nclude<string.h> charlist[5][4]={"cat","car","cab","cap","can"}; intsort_function(constvoid*a,constvoid*b); intmain(void) { intx; qsort((void*)list,5,sizeof(list[0]),sort_function); for(x=0;x<5;x++) printf("%s//n",list[x]); return0; } intsort_function(constvoid*a,constvoid*b) { return(strcmp((char*)a,(char*)b)); } 例:数组排序 #i nclude<stdio.h> #i nclude<stdlib.h> intlist[5]={7,5,9,2,6}; intsort_function(constvoid*a,constvoid*b); intmain(void) { intx; qsort((void*)list,5,sizeof(int),sort_function); for(x=0;x<5;x++) printf("%d//n",list[x]); return0; } intsort_function(constvoid*a,constvoid*b) { if(*(int*)a>*(int*)b) return1; elseif(*(int*)a<*(int*)b) return-1; else return0; } |
本文地址:http://www.45fan.com/a/question/72490.html