C语言排序函数和二分查找调用方法

本文介绍了C语言中如何利用qsort进行数组排序以及使用bsearch进行二分查找。qsort函数需要用户自定义比较函数,以实现通用排序,而bsearch则在已排序数组中查找指定元素,同样需要提供比较函数。通过实例展示了这两个函数的调用方法和参数解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程时经常遇到对数组排序或在一个数组中查找数字的情况,C库<stdio.h>中提供了简便的调用方法,将排序算法封装成通用的排序函数;

排序函数qsort

void qsort(
    void *base,
    size_t n,
    size_t size,
    int (*compar)(const void *, const void *)
    );

在使用时,用户需要自己编写一个判断两个数(不仅限于数字)比较大小的方法;
比如简单的判断两个数字的大小:

int num_comp(const int *a,const int *b)
{
    if(*a==*b)
        return 0;
    return *a>*b?1:-1;
}

注意函数的格式是不能变的,且第一个参数>第二个参数,需要返回一个正数.
在调用时,该如何调用呢?
如果有一个数组int num[100];里面是100个未排序的数字,要将这个数组按升序排列;
调用qsort函数:

qsort(num,100,sizeof(int),(int (*)(const void *,const void *))num_comp);

说明一下这里的参数,
第一个参数num是数组名;
第二个参数100是说这个要排序的数组大小num[0]到num[100-1];
第三个参数是排序的元素大小,这里是Int类型;
第四个是比较函数的指针,(int (*)(const void *,const void *)) 是指针类型转换;num_comp 是要比较函数的地址;

#include<iostream>
#include<stdlib.h>
#include<ctime>
using namespace std;
int num_comp(const int *a,const int *b);
int main()
{
   
   
    int num[100]={
   
   0};
    srand(time(0));
//数组初始化,填满0-100随机数;
    for(int i=0;i<100;i++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值