qsort
クイック ソートを実行します。この関数のセキュリティが強化されたバージョンについては、「qsort_s」を参照してください。
void qsort(
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
パラメーター
base
コピー先の配列を開始します。num
要素の配列のサイズ。width
バイトの要素のサイズ。compare
2 種類の配列の要素を比較し関係を指定する値を返すユーザーが指定したルーチンへのポインター。
解説
qsort の関数は num 要素の配列をwidth の各バイト順に並べ替えます。遅延並べ替えアルゴリズムを実装します。引数 base に使用する配列のベースへのポインターです。qsort に使用された要素を使用して配列をオーバーライドします。
qsort は一つ以上の期間中に compare 並べ替えルーチンを呼び出して各呼び出しの 2 種類の配列要素へのポインターを渡します。
compare( (void *) & elem1, (void *) & elem2 );
ルーチンは次のいずれかの要素は 1 とを比較します。
関数の戻り値を比較します。 |
Description |
---|---|
< 0 |
elem1elem2 より小さい |
0 |
elem2 と同等の elem1 |
> 0 |
elem2 より大きい elem1 |
配列は比較関数の定義に従って昇順に並べ替えられます。から順に配列を並べ替えるには「より大きい」と比較関数の 「未満」の意味を元に戻します。
この関数は、パラメーターを検証します。compare または num が NULL であるかまたは base が NULL 場合*num がゼロ以外が width 未満の場合無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可された場合関数はをerrno は EINVAL に設定されます。
必要条件
ルーチン |
必須ヘッダー |
---|---|
qsort |
<stdlib.h> および <search.h> |
追加互換性の詳細については互換性 を参照してください。
使用例
// crt_qsort.c
// arguments: every good boy deserves favor
/* This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( " %s", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
同等の .NET Framework 関数
System:: コレクション :: ArrayList:: 並べ替え