qsortqsort

クイック ソートを実行します。Performs a quick sort. この関数のセキュリティが強化されたバージョンについては、「qsort_s」を参照してください。A more secure version of this function is available; see qsort_s.

構文Syntax

void qsort(
   void *base,
   size_t number,
   size_t width,
   int (__cdecl *compare )(const void *, const void *)
);

パラメーターParameters

basebase
対象となる配列の先頭。Start of target array.

numbernumber
配列サイズ (要素数)。Array size in elements.

widthwidth
要素のサイズ (バイト単位)。Element size in bytes.

comparecompare
2 つの配列要素を比較してそれらの関係を指定する値を返すユーザー指定のルーチンへのポインターです。Pointer to a user-supplied routine that compares two array elements and returns a value that specifies their relationship.

RemarksRemarks

Qsort関数の配列を並べ替えるためのクイック ソート アルゴリズムを実装の各要素は、バイト。The qsort function implements a quick-sort algorithm to sort an array of number elements, each of width bytes. 引数基本を並べ替える配列のベースへのポインターです。The argument base is a pointer to the base of the array to be sorted. qsort並べ替えられた要素を使用してこの配列を上書きします。qsort overwrites this array by using the sorted elements.

qsort呼び出し、比較日常的な 1 つまたは複数の並べ替え中にタイムアウトし、呼び出しごとに 2 つの配列要素へのポインターを渡します。qsort calls the compare routine one or more times during the sort, and passes pointers to two array elements on each call.

compare( (void *) & elem1, (void *) & elem2 );

ルーチンは、要素を比較し、次の値のいずれかを返します。The routine compares the elements and returns one of the following values.

関数の戻り値の比較Compare function return value 説明Description
< 0< 0 elem1未満elem2elem1 less than elem2
00 elem1等しくelem2elem1 equivalent to elem2
> 0> 0 elem1より大きいelem2elem1 greater than elem2

配列は、比較関数による定義に従って、昇順で並べ替えられます。The array is sorted in increasing order, as defined by the comparison function. 配列を降順で並べ替えるには、比較関数の "より大きい" と "より小さい" の意味を入れ替えます。To sort an array in decreasing order, reverse the sense of "greater than" and "less than" in the comparison function.

この関数は、パラメーターを検証します。This function validates its parameters. 場合比較またはNULL、または基本NULL 0 以外の場合、またはが小さい」の説明に従って、0 よりも、無効なパラメーター ハンドラーが呼び出さはパラメーターの検証です。If compare or number is NULL, or if base is NULL and number is nonzero, or if width is less than zero, the invalid parameter handler is invoked, as described in Parameter Validation. かどうかは、引き続き実行が許可された、関数を返しますとerrnoに設定されているEINVALします。If execution is allowed to continue, the function returns and errno is set to EINVAL.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
qsortqsort <stdlib.h> および <search.h><stdlib.h> and <search.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

// 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 );
}
boy deserves every favor good

関連項目See also

検索と並べ替えSearching and Sorting
bsearchbsearch
_lsearch_lsearch