第一次发布在这里。
我正在尝试创建一个比较快速排序,合并排序,冒泡排序和选择排序的类。我已经实现了所有的排序方法,并创建了一个随机数组方法,用1000个随机整数填充随机数组。但是,当我运行我的程序时,我的main方法在初始欢迎消息之后停止并允许用户输入。我将非常感谢任何帮助,我确信我错过了一些简单的错误。
<p id = "outputLaps"></p>
答案 0 :(得分:1)
你的无限循环在bubbleSort:
public static int bubbleSort(int[] a)
{
boolean hasSwapped = true;
while (hasSwapped == true)
{
hasSwapped = false; // Need to set this to false
for (int i = 0; i < a.length - 1; i++)
{
if (a[i] > a[i + 1]) // Needs to swap
{
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
hasSwapped = true;
bubbleCount++;
}
}
}
return bubbleCount;
}
答案 1 :(得分:1)
问题出在您的bubbleSort()
方法中。 hasSwapped
布尔值永远不会设置为false,因此while
循环无限次。
您的代码中还有另一个问题。在main
方法中,您必须将array
方法返回的populateArray()
分配回a
。您在int[] select = a;
方法中执行的main
这样的分配不会执行您想要执行的操作。相反,只需将数组a
发送到排序方法。
像这样:
int[] a = new int[1000];
a=populateArray(a);
testSelection = selectionSort(a);
testBubble = bubbleSort(a);
testQuick = quickSort(a,0,0);
testMerge = mergeSort(a);