void quicksort(float x[],int first,int last)
{
float temp;int j, pivot, i;
if(first<last){
pivot=first;
i=first;
j=last;
while(i<j){
while(x[i]<=x[pivot]&&i<last)
i++;
while(x[j]>x[pivot])
j--;
if(i<j){
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
temp=x[pivot];
x[pivot]=x[j];
x[j]=temp;
quicksort(x,first,j-1);
quicksort(x,j+1,last);
}
}
main()
{
float a[]={4.0,6.0,8.5,9.1,6,11.1,1.1};
//int len=6;
int len=7;
quicksort(a,0,len);
int i=0;
for(i=0;i<len;i++)
printf("%d\n",a[i]);
}
Во время выполнения на кодовых блоках печатает бред, и цикл не заканчивается после 7 итераций, выполнение продолжается до тех пор, пока в конце не произойдет ошибка сегментации.
компиляция с помощью gcc в командной строке не помогает.
но работает нормально на моем пользовательском тесте codeforces, ИСПОЛЬЗУЯ GNU C ++ 4.7, т. е. он заканчивается после 7-кратной распечатки. но дает
Ошибка выполнения: код выхода 11
при использовании GNU C 4
Как решить это?
Вы пытаетесь напечатать float
с помощью %d
спецификатор, который для целых чисел. Пытаться
printf("%f\n", a[i]);
вместо.
Есть два вопроса с вашим кодом:
%f
не %d
и это покрывает гибришскую часть …