次の方法で共有


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:: 並べ替え

参照

関連項目

検索と並べ替え

bsearch

_lsearch