基本的に、C でクイックソート アルゴリズムを取得したので、整数ではなく浮動小数点数をソートする必要があります。これを行うためにコードを編集しました(そう思った)が、コードを実行すると、数字の後に小数点以下の桁数があるのはごくわずかで、残りは単に「.0」であるため、3.4、6.5、2.3未満の数字は次のようになります2.3、3.0、および 6.5。なぜこれが起こるのか、どうすればこれを克服できるのか誰か知っていますか? どうぞ、どんな助けでも大歓迎です。
#include <stdio.h>
void quicksort(float [10],float,float);
int main()
{
float array[] = {3.4, 6.5, 2.3};
int i,elementsize = 3 ,any;
quicksort(array,0,elementsize-1);
printf("\nSorted elements: ");
for(i=0;i<elementsize;i++)
printf("%.1f ",array[i]);
printf("\nPress Any Key to Exit");
scanf("%d", &any);
return 0;
}
void quicksort(float x[10],float first,float last)
{ int pivot, j, temp, 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);
}
}