Java bubblesort变体如何有效地执行排序?
//我无意中在泡泡糖上做了一个奇怪的变化。我错误地省略了通常的if a[j]>a[j+1],但是代码仍然能够完美地运行。与普通的泡泡港相比,使用这种泡泡港是否有任何优势Java bubblesort变体如何有效地执行排序?,java,algorithm,sorting,Java,Algorithm,Sorting,//我无意中在泡泡糖上做了一个奇怪的变化。我错误地省略了通常的if a[j]>a[j+1],但是代码仍然能够完美地运行。与普通的泡泡港相比,使用这种泡泡港是否有任何优势 public int[] bubbleSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { for (int j = i + 1; j < a.length - 1; j++) { if
public int[] bubbleSort(int[] a)
{
for (int i = 0; i < a.length - 1; i++)
{
for (int j = i + 1; j < a.length - 1; j++)
{
if (a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}
public int[]bubbleSort(int[]a)
{
对于(int i=0;ia[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=温度;
}
}
}
返回a;
}
注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你知道为什么吗?),在第二次迭代后,第二个值将是第二个最小值,在第三次迭代后,第三个值将是第三个最小值,等等
(也就是说,我认为您的逻辑中有一个错误。j
的上限应该是a.length
,而不是a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)
您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序
希望这有帮助 注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等 (也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是a.length
,而不是a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)
您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序
希望这有帮助 注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等 (也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是a.length
,而不是a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)
您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序
希望这有帮助 注意,在外循环的第一次迭代结束时,数组中的第一个值必然是数组中的最小值(你明白为什么了吗?),在第二次迭代之后,第二个值将是第二个最小值,在第三次迭代之后,第三个值将是第三个最小值,等等 (也就是说,我认为您的逻辑中有一个错误。
j
的上限应该是a.length
,而不是a.length-1
,否则数组中的最后一个值永远不会与其他值进行比较或移动。)
您可能需要研究,其工作原理是将数组中的最小值移动到前面,然后移动第二个最小值,等等。您提出的算法(本质上)是选择排序的修改版本,而不是修改的冒泡排序
希望这有帮助 这条丢失的线属于哪里?我没有看到索引
k
。如果我遗漏了什么,请告诉我。你把k+1
换成了j
,那只不过是k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引k
。如果我遗漏了什么,请告诉我。你把k+1
换成了j
,那只不过是k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引k
。如果我遗漏了什么,请告诉我。你把k+1
换成了j
,那只不过是k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1]这条缺失的行属于哪里?我没有看到索引k
。如果我遗漏了什么,请告诉我。你把k+1
换成了j
,那只不过是k+1
?我的错,k是指jFixed*。a[k],a[k+1]已替换为a[j],a[j+1],这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢这似乎是正确的。我刚刚在白板上完成了我的算法,它开始非常类似于选择排序。我纠正了这个错误。谢谢