【发布时间】:2014-11-23 23:25:40
【问题描述】:
如果我有一个像这样的int[3] 数组:
score_list[3] = [ 1, 2, 0]
数组中的每个位置对应一个特定的文档编号:
score_list[0] = D1
score_list[1] = D2
score_list[2] = D3
按降序对数组进行排序的最简单方法是什么,跟踪每个移动的 int 的位置
在哪里(排序后):
score_list[3] = [ 2, 1, 0]
和
score_list[0] = D2
score_list[1] = D1
score_list[2] = D3
我只需要按降序打印,实际上不需要重新排列int数组,所以:
for (int i=0; i<3; i++)
{
if (score_list[0] > score_list[1] && score_list[2])
printf("D%d-%d",i, score_list[0]);
if (score_list[1] > score_list[0] && score_list[2])
printf("D%d-%d", i, score_list[1]);
if (score_list[2] > score_list[0] && score_list[1])
printf("D%d-%d", i, score_list[2]);
}
会先打印最大的数字,然后我会比较最后2个,我只是觉得这太耗时了,必须有更有效的方法
【问题讨论】:
-
请描述你尝试了什么。
-
我不明白你在数组中存储了什么?值还是字符串?或者两者有什么关系?
-
根据问题是一个int数组
-
我不明白你想做什么?您需要打印排序后的数组而不更改它吗?
-
是的,数组是在哈希表中跟踪文档分数的一种更简单的约定,我唯一的问题是按分数降序打印文档