クイックソートを実装できません。
Posted: 2010年7月23日(金) 17:20
はじめましてakiといいます。
クイックソートを作っているんですが、うまくうごきません。
お手数ですが、誰か分かる方教えてください。データを添付できませんでした
#include <stdio.h>
# define N 32768
# define n 99
void myalgo(int data[/url],int begin,int end){
int kijyun,a,b,c;
int temp;
kijyun=data[(begin+end)/2];//真ん中を基準にして大きさを比べていく
a=begin;
b=end;
while(1){
temp=0;
//基準より大きいものを右に小さいものを左に置く
while(data[a]<kijyun){
a++;
}
while(data>kijyun){
b--;
}
if(a>=b){
break;
}
temp=data[a];
data[a]=data;
data=temp;
a++;
b--;
}
for(c=0;c<=n;c++){
printf("%d :",data[c]);
}
printf("\n");
if(begin<a-1){//左側を同様にして並べ直す。要素が一つになるまで
myalgo(data,begin,a);
}
if(b+1<end){//右側を同様にして並べ直す。要素が一つになるまで
myalgo(data,a+1,end);
}
}
int main(void)
{
int value, data[N], i=0, j;
while ((scanf("%d", &value)) != EOF)
data[i++] = value;
mtrace();
myalgo(data,0,n);
muntrace();
for (j=0; j<i; j++)
printf("%d\n", data[j]);
}
クイックソートを作っているんですが、うまくうごきません。
お手数ですが、誰か分かる方教えてください。データを添付できませんでした
#include <stdio.h>
# define N 32768
# define n 99
void myalgo(int data[/url],int begin,int end){
int kijyun,a,b,c;
int temp;
kijyun=data[(begin+end)/2];//真ん中を基準にして大きさを比べていく
a=begin;
b=end;
while(1){
temp=0;
//基準より大きいものを右に小さいものを左に置く
while(data[a]<kijyun){
a++;
}
while(data>kijyun){
b--;
}
if(a>=b){
break;
}
temp=data[a];
data[a]=data;
data=temp;
a++;
b--;
}
for(c=0;c<=n;c++){
printf("%d :",data[c]);
}
printf("\n");
if(begin<a-1){//左側を同様にして並べ直す。要素が一つになるまで
myalgo(data,begin,a);
}
if(b+1<end){//右側を同様にして並べ直す。要素が一つになるまで
myalgo(data,a+1,end);
}
}
int main(void)
{
int value, data[N], i=0, j;
while ((scanf("%d", &value)) != EOF)
data[i++] = value;
mtrace();
myalgo(data,0,n);
muntrace();
for (j=0; j<i; j++)
printf("%d\n", data[j]);
}