内置函数,用于在C中搜索排序数组

时间:2017-11-16 02:40:59

标签: c sorting search

C中是否有内置函数用于搜索已排序的整数数组?

我可以很容易地实现它,但它似乎很常见 - 如果没有库/内置C函数会很奇怪。

3 个答案:

答案 0 :(得分:1)

stdlib.h实际上包含一些排序和搜索功能。 qsort将允许您对数组进行排序,bsearch将为您执行排序数组的二进制搜索。在这两种情况下都必须提供比较功能。

答案 1 :(得分:0)

在排序数组https://www.tutorialspoint.com/c_standard_library/c_function_bsearch.htm

中进行二分查找bsearch()

示例:

#include <stdio.h>
#include <stdlib.h>


int cmp_int(const void *pa, const void *pb) { 
    int a = *(int *)pa; 
    int b = *(int *)pb; 
    return (a > b) - (a < b); 
}

int values[] = { 5, 20, 29, 32, 63 };

int main () {
    int *item;
    int key = 32;

    /* using bsearch() to find value 32 in the array */
    item = (int*) bsearch (&key, values, 5, sizeof (int), cmpfunc);
    if( item != NULL ) {
        printf("Found item = %d\n", *item);
    } else {
        printf("Item = %d could not be found\n", *item);
    }

    return(0);
}

<强> UPD 通过@ jonathan-leffler

添加了适当的比较器

答案 2 :(得分:0)

您需要bsearch,此链接将带您进入手册以及该手册中提供的示例。或者在linux框中你可以输入

man -a bsearch