gpt4 book ai didi

java - 快速排序整数数组的数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:14 26 4
gpt4 key购买 nike

我需要为我的一门课中的家庭作业问题对整数数组进行排序。我似乎几乎每次都会收到 StackOverFlowError。我的数组是 list2[10][10]。我的快速排序分为 3 种方法。 quickSort1(int, int)是main函数,partition比较一个新的partition,swap只是简单的交换list2[i]和list2[j]处的整数数组。如果 list2[a] 小于 list2[b],则 compare(int a, int b) 方法返回 1 - 如果 b 小于 a,则返回 1,如果它们相等,则返回 100。

我不确定我的快速排序是否正确实现,但我知道交换和比较工作完全按照我所说的进行。我有一种预感,当我收到 StackOverFlowError 时,它通常会永远重复出现。

public static int partition(int low, int high)
{
int i = low, j = high;
int pivot = (low+high)/2;
System.out.println(i + " " + j + " " + pivot);
while (i <= j) {
while (compare(i, pivot) > 0)
i++;
while (compare(pivot, j) > 0)
j--;
if (i < j) {
swap(i,j);
i++;
j--;
}
if (i == pivot && i == j-1)
{
return i;
}
if (j == pivot && j-1 == i)
{
return i;
}
}

return i;
}

public static void quickSort1(int low, int high) {
System.out.println("Recursion: " + recursions);
int i = partition(low, high);
System.out.println(i);
if (low < i -1)
{
recursions++;
quickSort1(low, i -1);
}
if (i < high-1)
{
recursions++;
quickSort1(i, high);
}


}

public static void swap( int i, int j)
{
int[] temp = new int[n];

for(int k = 0; k < n; k++) {
temp[k] = list2[i][k];
}
for(int k = 0; k < n; k++) {
list2[i][k] = list2[j][k];
}
for(int k = 0; k < n; k++) {
list2[j][k] = temp[k];
}

}

最佳答案

我不认为这些行在循环内是必要的 while(i <= j) :

if (i == pivot && i == j-1)
{
return i;
}
if (j == pivot && j-1 == i)
{
return i;
}

尝试从您的代码中删除它们。

关于java - 快速排序整数数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791629/

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