次の方法で共有


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

参照

関連項目

検索と並べ替え

bsearch

_lsearch