Java数组逆序排序!需要反向反转

标签 java arrays sorting reverse

现在我已经进行了数组排序(这比收到错误更好),只不过它的排序方式与我希望的排序方式相反。

   public static void sortDatabase(int numRecords, String[] sDeptArr, 
              int[] iCourseNumArr, int[] iEnrollmentArr)
   {
       System.out.println("\nSort the database. \n");
       String sTemp = null;
       int iTemp = 0;
       int eTemp = 0;
       String a, b = null;
       for(int i=0; i<numRecords; i++)
       {
           int iPosMin = i+1;
           for(int j=iPosMin; j<numRecords; j++)
           {
               a = sDeptArr[i];
               b = sDeptArr[iPosMin];
               if(a.compareTo(b) > 0)
               {
                   sTemp= sDeptArr[j];
                   sDeptArr[j] = sDeptArr[iPosMin];
                   sDeptArr[iPosMin] = sTemp;
                   iTemp = iCourseNumArr[j];
                   iCourseNumArr[j] = iCourseNumArr[iPosMin];
                   iCourseNumArr[iPosMin] = iTemp;
                   eTemp = iEnrollmentArr[j];
                   iEnrollmentArr[j] = iEnrollmentArr[iPosMin];
                   iEnrollmentArr[iPosMin] = eTemp;
               }
               else if(sDeptArr[j].equals(sDeptArr[iPosMin]) && !(iCourseNumArr[j] < iCourseNumArr[iPosMin]))
               {
                   sTemp= sDeptArr[i];
                   sDeptArr[i] = sDeptArr[iPosMin];
                   sDeptArr[iPosMin] = sTemp;
                   iTemp = iCourseNumArr[i];
                   iCourseNumArr[i] = iCourseNumArr[iPosMin];
                   iCourseNumArr[iPosMin] = iTemp;
                   eTemp = iEnrollmentArr[i];
                   iEnrollmentArr[i] = iEnrollmentArr[iPosMin];
                   iEnrollmentArr[iPosMin] = eTemp;
               }
               else continue;
           }

       }
   }

同样,没有数组列表或 array.sorts。我只需要反转它的排序方式,但我不知道如何进行。

最佳答案

就做 a.compareTo(b) < 0而不是 > 0

编辑:我已经解决了问题。但由于这是作业(感谢诚实),我不会发布我的解决方案,但这里有一些提示:

  • 您正在进行选择排序。该算法并不像您编写的那么复杂。仅当您正在检查的两个元素顺序错误时才需要交换。我看到你们那里有 3 个分行,不需要。

  • 分配 a 时查看一下和b 。通过内循环,其中j正在改变,ab永远不会改变,因为iiPosMin保持原样。我希望这会有所帮助。

  • 通过提取方法将算法分解为您知道可以工作的离散部分总是好的。您重复相同的交换代码两次,但使用不同的索引参数。把它拿出来,然后做一个:

-

// swaps the object at position i with position j in all arrays
private static void swap(String[] sDeptArr, int[] iCourseNumArr, int[] iEnrollmentArr, int i, int j)

然后你会发现你的代码变得更加干净。

关于Java数组逆序排序!需要反向反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309560/

相关文章:

arrays - Postgres 数组连接函数

algorithm - 使用可能错误的比较器分析排序算法?

android - 无法在android中对字符串数组进行排序,Arrays.sort导致致命异常

java - 基本的谷歌地图 Android,2 个小错误与 PERMISSIONS

java |通过正则表达式传递插入符号

java并发: multi-producer one-consumer

javascript - 如何使用javascript动态创建数组

Java:如何指定 JVM 参数 -XX:ErrorFile 并在文件名中保留自动 PID

c++ - std::untialized_copy 是否有未定义的行为?

objective-c - 使用给定语言环境创建 NSSortDescriptor