qsort()
C 库函数 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 对数组进行排序。
下面是 qsort() 函数的声明。
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))该函数不返回任何值。
bsearch()
C 库函数 void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) 对 nitems 对象的数组执行二分查找,base 指向进行查找的数组,key 指向要查找的元素,size 指定数组中每个元素的大小。
数组的内容应根据 compar 所对应的比较函数升序排序。
下面是 bsearch() 函数的声明。
void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))如果查找成功,该函数返回一个指向数组中匹配元素的指针,否则返回空指针。.
#include "pch.h" #include<ctime> #include<array> #include<iostream> using namespace std; int compare(const void* a, const void* b); int main() { array<int, 50000> c; for (int i = 0; i < c.size(); i++) { c[i] = rand(); } cout << "数组长度:c.size() = " << c.size() << endl; cout << "数组第一个数:c.front() = " << c.front() << endl; cout << "数组最后一个数:c.back() = " << c.back() << endl; cout << "数组的首地址:c.data() = " << c.data() << endl; int foundNum = 125; clock_t start = clock(); qsort(c.data(), c.size(), sizeof(int), compare); int *t = (int*)bsearch(&foundNum, c.data(), c.size(), sizeof(int), compare); cout << "要查找的数是:" << *t << "ms" << endl; cout << "共用时:" << (clock() - start) << endl; cout << "min = " <<c[0] << endl; cout << "max = " << c[c.size() - 1] << endl; return 0; } int compare(const void* a, const void* b) { return (*(int*)a - *(int*)b); }结果:
一、文章
1.https://www.runoob.com/cprogramming/c-function-bsearch.html 2.https://www.runoob.com/cprogramming/c-function-qsort.html
二、视频
1.https://www.bilibili.com/video/av25432066/?p=3
文章和视频真的很详细,大家可以深入学习。