【发布时间】:2018-03-28 03:25:54
【问题描述】:
我无法理解比较的工作原理以及冒泡排序(或任何类型的比较)是如何进行的。在我的冒泡排序示例代码中:
public class BS
{
public static void main (String[] args)
{
int[] Array = {5,1,4,2,8};
System.out.println("Array Before Bubble Sort:");
for (int element : Array)
System.out.print(element + " ");
bubbleSort(Array);
System.out.println("Array After Bubble Sort:");
for (int element : Array)
System.out.print(element + " ");
System.out.print("\n");
}
public static void bubbleSort(int[] array)
{
int lastPos;
int index;
int temp;
int comp = 0;
int swap = 0;
for(lastPos = array.length - 1; lastPos >= 0; lastPos--)
{
for(index = 0; index <= lastPos - 1; index++)
{
comp++;
if(array[index] > array[index + 1])
{
swap++;
temp = array[index];
array[index] = array[index + 1];
array[index + 1] = temp;
}
}
}
System.out.println("\nComparisons: " + comp);
System.out.println("Swaps: " +swap;
}
}
输出是这样的:
Array Before Bubble Sort:
5 1 4 2 8
Comparisons: 10
Swaps: 4
Array After Bubble Sort:
1 2 4 5 8
据我所知,交换次数是正确的,但比较次数不应该是 12 次吗?无论我在数组中放入什么数字,比较的次数总是10。不同数组的冒泡排序比较不一样吗?还是取决于数组的大小?我找不到任何对此的见解,我真的很困惑。我会很感激一些帮助,如果需要,我会编辑更多信息。
【问题讨论】:
-
不都是n(n-1)/2吗?
-
是的,我就是这么想的。那么如果数组中有相同数量的项目,那么它的比较次数总是相同的吗?
-
对于标准的冒泡排序,我相信永远都是这样。
标签: java sorting bubble-sort