2017-04-04 10 views
0

私はプログラミングブックから関数ポインタの使用法を学んでいます。そこでは、bsearch()とqsort()の使用が見つかりました。 2つの関数には、関数ポインタcmpfuncのパラメータがあります。cmpfunc in bsearch()in c

qsort()では、2つの要素を比較するためにcmpfuncが必要です。

なぜ、cmpfuncがbsearch()に必要で、どのように動作するのか理解できません。

私を助けてください。前もって感謝します。

+0

私はあなたが何を意味しているかを仮定することができますが、通常、並べ替え関数に比較関数を渡してユーザーが独自の並べ替えスキームを選択できるようにします。つまり、要素を昇順または降順に並べ替えたり、彼らの価値mod 5、またはあなたが本当に好きなもの。 –

答えて

2

thisのドキュメントによれば、bsearchコンパイラ関数は、qsort関数で使用されているものと同様に、配列内の要素の候補を評価するために必要です。これは、必要な要素が含まれている場合、またはすべての反復で検索スペースの半分を廃棄する場合は、検索を終了する必要があります。役割はqsort機能と同じです。

+0

ありがとうございます@コーダー – ishtiaq11

1

bsearchでは、調べる要素が実際にキーと一致するかどうかを判断するために比較関数cmpfuncが呼び出されます。一致しない場合は、キーがそのリスト内で早いか遅いかを判断します。

+0

ありがとう@Ross Presser。 – ishtiaq11