この関数の目的
qsort()は、配列の要素をクイックソート法で並び替える。
定義
#include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
働き
この関数は base が最初の要素を指している、 nmemb 個の要素をもつ配列をソートする。 個々の配列の要素のサイズは size によって指定される。
配列の中身は compar が指す関数に従って昇順にソートされる。 compar が指す比較関数の2つの引数には比較されるオブジェクトへのポインタが渡される。 関数は最初の引数の方が次の引数より小さいか、等しいか、大きいかによって負、ゼロ、正の値を返さなければならない。 配列の要素は、 key より小さいもの、等しいもの、より大きいものの順番に並んでいなければならない。
二つ以上の要素が適合した場合にどれへのポインタが返されるは未指定である。
この関数は値を返さない。
解説
仕様の中にはクイックソートを使って並び替えるとはどこにも書いていないが、関数名の qsort はほぼ間違いなく quick sort のことであり、 実装がクイックソート法である処理系が殆どであろう。
クイックソートとは何か?これは任意の順番で並べられたオブジェクトを、規則によって順番にソートするアルゴリズムの一つで、 配列のサイズが大きいときに特に有効である。詳しくはアルゴリズムの本に書いてある。