我正在研究bubblesort并在学习之后提出了这个代码。几乎网络上的每个代码都与我的不同。但我的工作没有问题。
你能告诉我我做错了吗?
int[] a= {23,1,5,12,1,2,3};
for (int i=0; i<a.length; i++) {
for (int j=1; j<a.length; j++) {
if(a[j]<a[j-1]) {
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
System.out.println(Arrays.toString(a));
}
答案 0 :(得分:1)
这在技术上是正确的但不是最佳的。您提到的其他解决方案可能包括一个布尔值,以确保列表在进一步之前尚未排序。无论如何,您的版本都将执行O(n ^ 2)次迭代,即使输入已经排序。
答案 1 :(得分:0)
根据Corman的文件:
&#34;它可以通过交换相邻的无序排列的元素来重复工作,这也是你所做的。
正如书中所提到的,它不是最优的解决方案,但它在O(n ^ 2)时间内完成。你如何实施完全取决于你,但如果我要评分,我会给你充分的信任!