编译器函数库自带的快速排序函数。
使用qsort()排序并用 bsearch()搜索是一个比较常用的组合,使用方便快捷。
qsort 的函数原型是
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针
其中base是排序的一个集合
数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。(不同类型的参数要用不同的函数进行比较)
根据返回值的不同,可以改变qsort是从小到大排列还是从大到小排列。返回值小于零从小到大排列,返回值大于零从大到小排列。
一 整形比较
int
comp(
const
void
*a,
const
void
*b)
{
return
*(
int
*)a-*(
int
*)b;
}
int
Comp(
const
void
*p1,
const
void
*p2)
{
return
strcmp
((
char
*)p2,(
char
*)p1);
}
structNode
{
double
data;
int
other;
}s[100];
int
Comp(constvoid*p1,constvoid*p2)
{
return
(*(Node*)p2).data>(*(Node*)p1).data?1:-1;
}
#define _CRT_SECURE_NO_DEPRECATE 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
int Comp(const void*p1,const void*p2)
{
return *(int*)p1-*(int*)p2;
}
int main()
{
int arr[]={1,5,2,3,4,6,8,7,9};
int sz =sizeof(arr)/sizeof(arr[0]);
int i = 0;
qsort(arr,sz,sizeof(arr[0]),Comp);
for(i=0; i<sz; i++)
{
printf("%d",arr[i]);
}
system("pause");
return 0;
}