qsort和bsearch的使用

2021-06-06 21:37:53 字數 1047 閱讀 9756

#include

#include

#include

#include

#include

using namespace std;

#define n 15

int a[n];

int cmp(const void *x,const void *y)

int char_cmp(const void *x,const void *y)

int main(){/*

char a[n][100];

srand(time(0));

for(int i=0;i

c語言中 bsearch 包含在標頭檔案中,此函式可以根據你給的條件實現二分查詢,如果找到元素則返回指向該元素的指標,否則返回null;對於有多個元素匹配成功的情況,bsearch()未定義返回哪乙個。使用 bsearch 函式也要自己定義比較子函式。

函式原型:

[cpp]view plain

copy

void

*bsearch(

const

void

*key, 

const

void

*base, 

size_t

num, 

size_t

size, 

int(*cmp)(

const

void

*, const

void

*));  

解釋一下引數

key 指向要查詢的元素

base 指向進行查詢的陣列

num 陣列中元素的個數

size 陣列中每個元素的大小,一般用sizeof()表示

cmp 比較兩個元素的函式,定義比較規則。需要注意的是,查詢陣列必須是經過預先排序的,而排序的規則要和比較子函式cmp的規則相同。

因為使用bsearch函式要求陣列預先排好序,所以該函式通常和快速排序函式(qsort)一起使用,關於qsort函式,詳見《c語言標準庫函式 qsort 詳解》

qsort函式和bsearch函式詳解

qsort 包含在標頭檔案中,此函式 根據給的比較條件進行快速排序,排序之後的結果仍然放在原陣列中,需要自己寫乙個比較函式。函式原型 void qsort void base,size t num,size t size,int comparator const void const void ba...

qsort函式和bsearch函式的使用

1.qsort排序 qsort example include include int values int compare const void a,const void b int main output 10 20 25 40 90 100 2.bsearch查詢 bsearch exampl...

qsort和sort的區別

first qsort 基本快速排序的方法,每次把陣列分成兩分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本排序的效率較低。整合在 c語言庫函式裡面的的 qsort 函式,使用 三路劃分的方法解決這個問題。所謂三路劃分,是指把陣列劃分成小於劃分值,等於劃分值和大於劃分值的三個部分。函式對bu...