ページ 11

クイックソート関数

Posted: 2010年10月11日(月) 20:16
by TY
はじめまして。初めて利用させていただきます。C言語のクイックソート関数についてです。次の問題のプログラムを書いてみたのですが、コマンドプロンプトにエラーが表示されます。プログラムの中で、間違っているところがあれば、アドバイスをお願いします。

・問題
x,y座標で表される、2次元平面上の点を表す構造体pointを次のように定義する。
 struct point{
int x;
int y;
}
この構造体を要素とする配列ptabが次のように定義されていた時、x座標の小さい順に整列したい。
struct point ptab[/url]={{3,5},{2,9},{8,8},{4,5},{1,-5},{7,7},{7,0},{1,4},{5,3}};

・プログラム

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


struct point{
int x;
int y;
};

int struct_cmp(const int *x,const int *y){


return(*x-*y);
}

int main(void){

struct point ptab[/url]={{3,5},{2,9},{8,8},{4,5},{1,-5},{7,7},{7,0},{1,4},{5,3}};
int i;

qsort(point ptab,sizeof(int),(int(*)(const void*,const void*))struct_cmp);

for(i=0;i<9;i++)
printf("x=%d\t y=%d\n",ptab.x,ptab.y);
}
return (0);
}

Re:クイックソート関数

Posted: 2010年10月12日(火) 00:49
by fatens
qsort関数に渡す引数の数からして間違っていますが...

もう一度使い方を勉強された方が良いかと思います。
http://www.bohyoh.com/CandCPP/FAQ/FAQ00047.html

Re:クイックソート関数

Posted: 2010年10月15日(金) 20:17
by TY
わかりました。ありがとうございました。もう一度勉強しなおします。

Re:クイックソート関数

Posted: 2010年10月15日(金) 21:12
by Dixq (管理人)
毎度宣伝しているようですが、
クイックソートについて良く解らなければ是非こちらをご覧ください。

http://dixq.net/sort.html

クイックソートは良く解らないという声にこたえてアニメーションを使って解りやすく解説する為のソフトです。

Re:クイックソート関数

Posted: 2010年10月15日(金) 21:28
by たかぎ
ところで、qsprt関数はクイックソートとは限らないというのはあまり知られていないようですね。
クイックソートは必ずしも最適なアルゴリズムではないので、いろいろ工夫しているようです。