FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | ライブラリ | 書式 | 解説 | 戻り値 | 使用例 | 互換性 | エラー | 関連項目 | 規格 | 歴史
QSORT(3)               FreeBSD ライブラリ関数マニュアル               QSORT(3)

名称
     qsort, qsort_b, qsort_r, heapsort, heapsort_b, mergesort, mergesort_b --
     ソート関数

ライブラリ
     標準 C ライブラリ (libc, -lc)

書式
     #include <stdlib.h>

     void
     qsort(void *base, size_t nmemb, size_t size,
         int (*compar)(const void *, const void *));

     void
     qsort_b(void *base, size_t nmemb, size_t size,
         int (^compar)(const void *, const void *));

     void
     qsort_r(void *base, size_t nmemb, size_t size, void *thunk,
         int (*compar)(void *, const void *, const void *));

     int
     heapsort(void *base, size_t nmemb, size_t size,
         int (*compar)(const void *, const void *));

     int
     heapsort_b(void *base, size_t nmemb, size_t size,
         int (^compar)(const void *, const void *));

     int
     mergesort(void *base, size_t nmemb, size_t size,
         int (*compar)(const void *, const void *));

     int
     mergesort_b(void *base, size_t nmemb, size_t size,
         int (^compar)(const void *, const void *));

解説
     qsort() 関数は、修正された分割交換 (partition-exchange) ソート、またはク
     イックソートです。heapsort() 関数は、修正された選択ソートです。
     mergesort() 関数は、前もって存在する順序でデータのソートを対象とした指数
     検索 (exponential search) を備えた修正されたマージソートです。

     qsort() と heapsort() 関数は、base によって指される初期メンバである nmemb
     オブジェクトの配列をソートします。各オブジェクトのサイズは、size によって
     指定されます。mergesort() 関数は、同様に振る舞いますが、size が
     ``sizeof(void *) / 2'' より大きいことを必要とします。

     配列 base の内容は、比較されているオブジェクトを指す 2 つの引数を必要とす
     る、compar によって指される比較関数に従って昇順でソートされます。

     比較関数は、最初の引数が 2 番目の引数より、それぞれ、小さい、等しいまたは
     大きいなら、0 より小さい、等しいまたは大きい整数を返さなければなりませ
     ん。

     qsort_r() 関数は、compar を指す関数への最初の引数として変更せずに渡され
     る、追加の引数 thunk を取ることを除いて、qsort() と同様に振る舞います。こ
     れによって、比較関数は、グローバル変数を使用しないで追加のデータにアクセ
     スでき、その結果、qsort_r() は、リエントラントでなければならない関数での
     使用に適しています。qsort_b() 関数は、関数ポインタではなく、ブロックを取
     ることを除いて、qsort() と同じように振る舞います。

     qsort(), qsort_r() と heapsort() によって実装されたアルゴリズムは、安定し
     ていません、すなわち、2 つのメンバが等しいなら、ソートされた配列の順序
     は、不定になります。heapsort_b() 関数は、関数ポインタではなく、ブロックを
     取ることを除いて、heapsort() と同じように振る舞います。mergesort() アルゴ
     リズムは、安定しています。mergesort_b() 関数は、関数ポインタではなく、ブ
     ロックを取ることを除いて、mergesort() と同じように振る舞います。

     qsort() と qsort_r() 関数は、分割交換 (partition-exchange) ソートの一種で
     ある、C.A.R. Hoare の ``クイックソート'' アルゴリズムを実装しています。特
     に、D.E. Knuth の Algorithm Q を参照してください。quicksort は、O N lg N
     の平均時間がかかります。この実装は、その O N**2 の最悪の場合の振る舞いを
     回避するためにメディアン (median) 選択を使用します。

     heapsort() 関数は、選択ソートの一種である、J.W.J. William の ``ヒープソー
     ト'' アルゴリズムを実装しています。特に、D.E. Knuth の Algorithm H を参照
     してください。heapsort は、O N lg N 最悪の場合の時間がかかります。qsort()
     に勝る唯一の利点は、追加メモリをほとんど使わないことです。一方、qsort()
     は、メモリを割り付けず、再帰 (リカージョン) を使用して実装されています。

     関数 mergesort() は、サイズ nmemb * size バイトの追加メモリを必要としま
     す。空間の使用にリスクがない場合に限り、使用されるべきです。mergesort()
     関数は、前もって存在する順序でデータに最適化されます。その最悪の場合の時
     間は、O N lg N です。その最良の場合は、O N です。

     通常は、qsort() は、mergesort() より速く、それは、heapsort() より速いで
     す。データのメモリの利用可能性と前もって存在する順序は、これを真実でなく
     するかもしれません。

戻り値
     qsort() と qsort_r() 関数は、値を返しません。

     関数 heapsort() および mergesort() は、処理が成功すると値 0 を返します。
     そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値が設
     定されます。

使用例
     qsort() を使用して、同じ場所に int 値の配列をソートし、次に、標準出力に
     ソートされた配列を印刷するサンプルプログラムは、次の通りです:

     #include <stdio.h>
     #include <stdlib.h>

     /*
      * qsort(3) によって渡されたポインタを通して 'int' 値を比較する
      * カスタムの比較関数.
      */
     static int
     int_compare(const void *p1, const void *p2)
     {
             int left = *(const int *)p1;
             int right = *(const int *)p2;

             return ((left > right) - (left < right));
     }

     /*
      * 'int' 値の配列をソートして、標準出力にそれを印刷します.
      */
     int
     main(void)
     {
             int int_array[] = { 4, 5, 9, 3, 0, 1, 7, 2, 8, 6 };
             size_t array_size = sizeof(int_array) / sizeof(int_array[0]);
             size_t k;

             qsort(&int_array, array_size, sizeof(int_array[0]), int_compare);
             for (k = 0; k < array_size; k++)
                     printf(" %d", int_array[k]);
             puts("");
             return (EXIT_SUCCESS);
     }

互換性
     qsort() の以前のバージョンは、比較ルーチン自体が qsort(3) を呼び出すこと
     を許可していませんでした。これは、もはや真実ではありません。

エラー
     heapsort() と mergesort() 関数は、次の場合を除いて成功します:

     [EINVAL]           size 引数が 0 であるか、または mergesort() の size 引
                        数が ``sizeof(void *) / 2'' より小さい。

     [ENOMEM]           heapsort() または mergesort() 関数が、メモリを割り付け
                        られなかった。

関連項目
     sort(1), radixsort(3)

     Hoare, C.A.R., "Quicksort", The Computer Journal, 5:1, pp. 10-15, 1962.

     Williams, J.W.J, "Heapsort", Communications of the ACM, 7:1, pp. 347-348,
     1964.

     Knuth, D.E., "Sorting and Searching", The Art of Computer Programming,
     Vol. 3, pp. 114-123, 145-149, 1968.

     McIlroy, P.M., "Optimistic Sorting and Information Theoretic Complexity",
     Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, January 1992.

     Bentley, J.L.  and McIlroy, M.D., "Engineering a Sort Function",
     Software--Practice and Experience, Vol. 23(11), pp. 1249-1265,
     November 1993.

規格
     qsort() 関数は、ISO/IEC 9899:1990 (``ISO C90'') に適合しています。

歴史
     引数としてブロックを取るこれらの関数の変異型は、Mac OS X ではじめて登場し
     ました。この実装は、David Chisnall によって作成されました。

FreeBSD 11.2                   February 20, 2013                  FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索