java - 并行数组排序时出现问题

标签 java arrays sorting

我有一个类,我必须编写一个程序来读取一堆数据并将其放入几个不同的数组中。然后我必须对它们进行排序,但我的方法似乎不起作用。

在我的第一个 for 循环中,我有两个 if 语句,用于解决我需要解决的两种情况。第一种情况是队名在前,第二种情况是队名相同。如果球队名称相同,则按码数排序。

名称排序工作正常,但是当我取消注释第二个语句时,它会按我无法弄清楚的顺序对其进行排序。

public static void sortDatabase(int numRecords, String[] teamArr,
        int[] attemptsArr, int[] yardsArr, int[] winsArr,
        int[] loseArr)
{

    //Sort the database first according to name and then according to yards
    System.out.println("Sort the database.\n");

    int iMin;

    String teamTemp;
    int attemptTemp;
    int yardTemp;
    int winsTemp;
    int loseTemp;

    for(int i = 0; i < numRecords - 1; i++)
    {
        iMin = i;

        for(int k = i + 1; k < numRecords; k++)
        {
            int compare = teamArr[k].compareTo(teamArr[iMin]);
            if(compare < 0)
            {
                iMin = k;
            }
            else if(compare == 0 && yardsArr[k] < yardsArr[iMin])
            {                
                iMin = k;
            }

            //swap out all data
            teamTemp = teamArr[i];
            attemptTemp = attemptsArr[i];
            yardTemp = yardsArr[i];
            winsTemp = winsArr[i];
            loseTemp = loseArr[i];

            teamArr[i] = teamArr[iMin];
            attemptsArr[i] = attemptsArr[iMin];
            yardsArr[i] = yardsArr[iMin];
            winsArr[i] = winsArr[iMin];
            loseArr[i] = loseArr[iMin];

            teamArr[iMin] = teamTemp;
            attemptsArr[iMin] = attemptTemp;
            yardsArr[iMin] = yardTemp;
            winsArr[iMin] = winsTemp;
            loseArr[iMin] = loseTemp;
        }
    }
}

也不要评论或回答更好的方法来做到这一点,或者说我应该创建一个新类来处理所有数据。只需尝试用我正在使用的排序方法来回答即可。我正在为一个类做这个,几乎没有选择。

最佳答案

标记为 //swap out all data 的位需要位于设置 iMin 的 for 循环之后,而不是内部。现在,您在设置 iMin 的过程中进行交换,这将导致 iMin 出错并交换错误的元素。

关于java - 并行数组排序时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197609/

相关文章:

vb.net - 数组或列表中的项目是否保持其顺序?

python - Python中多维数组中列表的排序顺序

sorting - 如何检查列表是否在 Racket 中排序?

java - 使用tomcat运行时在java中获取路径文件夹

java - 具有适配器困境的 ListView

java - 使用 JSch 运行 here-doc 命令

java - 何时以及如何使用额外的 ConcurrentHashMap 同步?

arrays - 如何取数组中一些但不是全部整数的总和

python - 根据相邻值替换二维数组中的值

java - 我正在编写一个程序,用 Java 中的数组检测拼写错误的单词