gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:40:21 27 4
gpt4 key购买 nike

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

   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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com