- ベストアンサー
クイックソート
#include<stdio.h> #include<stdlib.h> #define MAX 10 int comp(const void *i,const void *j); int main(void) { int sort[MAX], i ; for(i=0 ; i<MAX ; i++){ sort[i] = rand(); } qsort(sort, MAX, sizeof(int), comp); for( i=0; i<MAX ; i++) printf("%d\n", sort[i]); return 0; } int comp (const void *i, const void *j) { return *(int*)i - *(int*)j; } これはクイックソートのプログラムなのですが、 int comp (const void *i, const void *j) { return *(int*)i - *(int*)j; } この部分がわかりません。ここでソートしているのですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1 の補足ですが, qsort の 4番目の引数は「2つの値を比較する」関数であり, 前の値が後の値より大きければ正の値を, 後の値の方が大きければ負の値を, そして 2つの値が同じであれば 0 を返す必要があります. そして, qsort が終わったときには「どの連続する 2つの要素に対してもこの関数の返り値が正にならない」ように配列されます.
補足
全ての要素を比較するためにiやjの値をコントロールしているのはどの部分ですか?