排序不同数据类型的多个数组而不使用对象

时间:2014-02-19 19:37:22

标签: java arrays oop sorting

我在java课程的作业中被要求根据学生的平均值

对多个数组进行排序
    201302972, AhmadJouni, 82 , 85 , 89 , Average: 85.333336
    201303123, Joe, 70 , 75 , 96 , Average: 80.333336
    201401034, Mohamad, 90 , 54 , 49 , Average: 64.333336
    201402100, Ali, 80 , 90 , 99 , Average: 89.666664

我的阵列:

int ID[] = new int [4];
int Grades[][]= new int [4][3];
String Name[] = new String[4];

我必须按照递增顺序的平均值对上述所有内容进行排序

最终输出应该看起来像

        201401034, John, 90 , 54 , 49 , Average: 64.333336
        201303123, Joe, 70 , 75 , 96 , Average: 80.333336
        201302972, Mike, 82 , 85 , 89 , Average: 85.333336
        201402100, Amy, 80 , 90 , 99 , Average: 89.666664

注意:不允许使用对象/构造函数,应该以一些简单的方式完成。这是挑战

完整代码:http://textuploader.com/1he1

2 个答案:

答案 0 :(得分:1)

您可以使用与使用单个字段相同的方式执行此操作,但不是在一个数组中交换值,而是一次性交换所有数组中相同位置的值。

答案 1 :(得分:1)

创建一个附加数组,其中包含数据数组的整数索引。然后对索引而不是数据数组进行排序。通过添加多个索引数组,您甚至可以根据不同的标准拥有多个排序顺序,而无需移动原始数据。

排序将使用伪代码逻辑对索引集进行排序:

if (average[index[i]] > average[index[j]]) {
    swap(index[i], index[j])
}

从您所引用的限制中不清楚您是应该编写自己的排序还是可以创建比较器,但基本思想保持不变:您重新排列索引集而不是更昂贵的移动多个操作数组同步数据。