我有一个使用Java进行气泡排序的函数,这段代码可以工作并对数组进行排序。然而,问题是我不知道它是如何分类的,因为它看起来不像标准的气泡排序。Java Bubble Sort Acting奇怪
public static void swap (int [ ] data, int index1, int index2)
// POST: elements at indexes are exchanged
{ int temp = data[index1]; // temporary to hold first value
data[index1] = data[index2];
data[index2] = temp;
}
public static void bubbleSort (int [ ] data)
// POST: elements in data array are sorted in ascending order
{ for (int ct1=0; ct1<data.length-1; ct1++) // outer loop moves one element into place
{ for (int ct2=0; ct2<data.length-1-ct1; ct2++)
if (data[ct2] > data[ct2+1]) // swap if element on left bigger than right
swap (data, ct2,ct2+1);
for (int i = 0; i < data.length; i++) System.out.print(data[i] + " ");
System.out.println();
}
}
我理解的气泡排序将采用数组{40, 90, 10, 60, 20}
并比较0和1的索引。如果第0个指数大于第1个指数,那么他们会交换。然后,在这种情况下,40和90会留在原来的位置,然后比较第一和第二个索引,导致90和10换。这将继续n - 1次,其中n是数组的长度。
问题是,使用该功能似乎给输出:
Bubble sort:
Starting array: 40 90 10 60 20
40 10 60 20 90
10 40 20 60 90
10 20 40 60 90
10 20 40 60 90
任何人可以帮助解释这个吗?
它似乎是比较任意值,并没有像它应该检查40和90。
它并不是任意比较事物。它正在完成代码的功能。从字面上看,它将更大的值“冒泡”到数组的末尾。在你的第一个内部循环中,设置一个'System.out.println'--可能有助于为你澄清它。 – kevin628
该行为与您的理解相符。您创建的输出是在每个交换之后处理每行之后。你应该使用更多的大括号。 – BevynQ
恰恰是我在找凯文。如果您发布答案,我会接受它。 – Nic