快速排序与折半查找算法函数:qsort与bsearch
来源:互联网 发布:wap办公软件 编辑:程序博客网 时间:2024/05/17 23:40
qsort用来排序,bsearch用二分法来查找元素
void qsort( void *base, size_t num, size_t width,int (__cdecl *compare)(const void *elem1, const void *elem2 ) );
base: 要排序的数组
num: 数组中的元素数目
width: 每个数组元素占用内存空间,可使用sizeof获得
compare: 比较两个数组元素的比较函数。本比较函数的第一个参数值小于、等于、大于第二参数值时,本比较函数的返回值应分别小于、等于、大于零。compare的两个参数elem1、elem2大小均等于width.
void *bsearch( const void *key, const void *base, size_t num,size_t width, int ( __cdecl *compare) ( const void *elem1, const void *elem2 ) );
qsort函数的compare参数也是一个函数指针,但其所指函数的参数elem1指向key,只有参数elem2大小等于width.
key:待查找的元素,它的类型不确定
base:升序排列的数组
num、width:同qsort函数的参数
compare:与qsort中不同之处在于它的参数elem1指向key,参数elem2大小等于width,指向base中的元素。
/////////////////////////////////#include <stdlib.h>typedef struct {int no;char name[100];}student;int compare(const void *s0, const void *s1); /* Declare a function for compare */int find(const void *s0, const void *s1);student yy[] = {{1, "aaa"}, {2, "bbb"}, {5, "agd"}, {0, "xxx"}};void main( ){student *argv = yy;int argc = sizeof(yy) / sizeof(yy[0]);student *result;int key = 2;int i;/* Sort using Quicksort algorithm: */qsort(argv, (size_t)argc, sizeof(student), compare );for( i = 0; i < argc; ++i ) /* Output sorted list */printf( "{%d %s} ", argv[i].no, argv[i].name);/* Find the word "key" using a binary search algorithm: */result = (student *)bsearch(&key, argv, argc, sizeof(student), find );if( result )printf( "\n{%d %s} found at %Fp\n", result->no, result->name, result);elseprintf( "\nkey not found!\n" );}int compare(const void *s0, const void *s1){student *a0 = (student *)s0;student *a1 = (student *)s1;if (a0->no == a1->no)return 0;else if (a0->no > a1->no)return 1;elsereturn -1;}int find(const void *s0, const void *s1){int no = *(int*)s0;student *s = (student*)s1;if (no == s->no)return 0;else if (no > s->no)return 1;elsereturn -1;}
- 快速排序与折半查找算法函数:qsort与bsearch
- 使用qsort()和bsearch()进行快速排序和折半查找
- 快速排序qsort()函数和二分查找bsearch()函数
- 二分查找函数bsearch与排序函数qsort(两个好基友)
- qsort 与bsearch
- qsort 与 bsearch
- qsort与bsearch
- qsort()与bsearch()
- qsort与bsearch
- qsort与bsearch学习
- qsort与bsearch
- 利用c语言的qsort与bsearch实现排序与查找
- 折半查找的递归实现与qsort
- qsort 与 bsearch 的魔力
- C/C++折半查找函数bsearch
- C 语言中自定义类型排序函数qsort以及相应的二分法查找函数bsearch
- 高效排序与折半查找
- qsort与bsearch中比较结构体
- Android 真机调试 步骤
- 用JSPSmartUpload进行文件的上传下载
- MongoDB学习系列 (一)
- mysql执行查询的过程
- listview用法
- 快速排序与折半查找算法函数:qsort与bsearch
- 排序算法---基数排序
- PHP自学之路-----DIV+CSS(第三天)
- php五大运行模式
- 面向对象编程总结
- C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用
- ios中开发的一些资源
- 01背包问题 一维、二维解法
- UVA 11045 My T-shirt suits me【二部图是否全匹配+DFS邻接矩阵实现】