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 とを比較します。
関数の戻り値を比較します。 |
説明 |
---|---|
< 0 |
elem1 が elem2 より小さい |
0 |
elem2へのelem1 の等価 |
> 0 |
elem1 が elem2 より大きい |
配列は、比較関数によって定義されている、昇順に並べ替えられます。 かからない順序で配列を並べ替えるには、「より大きい」と比較関数の「以下の感覚をより」に戻します。
この関数は、パラメーターを検証します。 compare または num が NULLであるか、または base が NULL になりnum *は 0 以外のか、width が小さい場合、無効なパラメーター ハンドラーが パラメーターの検証"に説明されているように、呼び出されます。 実行の継続 EINVALへの関数の戻り値と errno が設定されます。
必要条件
ルーチン |
必須ヘッダー |
---|---|
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::Collections::ArrayList::Sort