由i = 1,j = 2所犯下的错误。
53 for(i = 1; i <= n-1; i++)
54 for(j = 2; j <= n; j++)
55 {
56 if(v[i]/w[i] < v[j]/w[j])
57 {
58 tw = w[i];
59 w[i] = w[j];
60 w[j] = tw;
61 tv = v[i];
62 v[i] = v[j];
63 v[j] = tv;
64 }
65 }
正确的方法为
i= 1,j = i+1
因为i = 1,j = 2,所以后来排序时的时候,i > j的时候可能改变之前交换后的值。
阅读(1991) | 评论(0) | 转发(0) |