qsort简单解析

编译器函数库自带的快速排序函数。
使用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值