【发布时间】:2016-04-03 03:06:00
【问题描述】:
我尝试制作first value = first value / second value 并对其进行排序:
#include<stdlib.h>
#include<stdio.h>
int cmp (const void * a, const void * b)
{return ( *(float*)a - *(float*)b );}
int main()
{
float Array[4][2]= {{10,10},
{5, 10},
{5, 5 },
{2, 5}};
int i,j;
for(j=0;j<4;j++) //first value = first value / second value
{
Array[j][0]=Array[j][0]/Array[j][1];
}
qsort(Array, 4, 2*sizeof(Array[0][0]), cmp);
for(j=0;j<4;j++) //JUST PRINTF
{
for(i=0;i<2;i++)
printf("%.1f ",Array[j][i]);
printf("\n");
}
}
before qsort -------- after qsort ----- my expect
1.0 10.0 ------------- 0.5 10.0 -------- 0.4 5.0
0.5 10.0 ------------- 1.0 5.0 -------- 0.5 10.0
1.0 5.0 ------------- 0.4 5.0 -------- 1.0 5.0
0.4 5.0 ------------- 1.0 10.0 -------- 1.0 10.0
qsort 输出后很奇怪。你能告诉我我误解了什么吗?
【问题讨论】:
标签: c arrays floating-point quicksort qsort