我正在尝试在冒泡排序类中进行比较。但是,我一直得到相同的价值。有没有什么办法解决这一问题?感谢。
public void comparisons(int[] array)
{
int count = 0;
for (int i = 0; i < array.length - 1; i++)
{
for (int j = 0; j < array.length - i - 1; j++)
{
count++;
if ((array[i] > array[i + 1])) //Swaps the elements
{
int temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
System.out.print("\n\nComparisons:" + count);
}
答案 0 :(得分:0)
外循环索引 i 与内循环中 j 的所有值相同。看起来比较逻辑应该使用内部循环索引 j 。
如果count应该记录排序期间完成的交换次数,则可能需要在执行交换的代码块中。目前,count ++将始终执行相同的次数。
答案 1 :(得分:0)
未使用内循环索引j
,并且它具有不正确的边界。
public void comparisons(int[] array)
{
int count = 0;
for (int i = 0; i < array.length - 1; i++)
{
for (int j = i; j < array.length - 1; j++)
{
count++;
if ((array[j] > array[j + 1])) //Swaps the elements
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.print("\n\nComparisons:" + count);
}
答案 2 :(得分:0)
试试这个:
public void comparisons(int[] array)
{
int count = 0;
for (int i = 0; i < array.length - 1; i++)
{
for (int j = 0; j < array.length - i - 1; j++)
{
if ((array[i] > array[i + 1])) //Swaps the elements
{
int temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
count++;
}
}
}
System.out.print("\n\nComparisons:" + count);
}
您最好尝试在if条件中增加 count 的值。您可以根据要求将count++
置于if-condition内的任何位置。