我是Java的新手,所以一直试图将一些旧的JS练习翻译成Java.
这是一个泡泡排序(我知道,我知道......),这不起作用:
class BubbleSort{
public static void main(String args[]){
int nums [] = {5, 4, 6, 3, 12, 1};
Boolean swap = true;
while(swap){
swap = false;
for(int i = 1; i<nums.length ; i++){
if (nums[i - 1] > nums[i]){
int t = nums[i-1];
nums[i-1] = nums[i];
nums[i] = t;
swap = true;
}else{
swap = false;
}
}
}
System.out.print("Sorted: ");
for(int j=0 ; j<nums.length ; j++)
System.out.print(nums[j] + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
它返回4,3,5,1,6,12 ......所以发生了一些互换,但有些东西正在提前结束.
谁能发现我的问题?
只需删除代码中的else块(如下面的代码示例所示).一旦没有订购,你必须立即进行另一次交换.
在您的代码中,如果最后的项目顺序错误,则只进行另一次交换.如果您的阵列结束太快订购,您的排序也会很快结束.
class BubbleSort{
public static void main(String args[]){
int nums [] = {5, 4, 6, 3, 12, 1};
Boolean swap = true;
while(swap){
swap = false;
for(int i = 1; i<nums.length ; i++){
if (nums[i - 1] > nums[i]){
int t = nums[i-1];
nums[i-1] = nums[i];
nums[i] = t;
swap = true;
}/* else{
swap = false;
}*/
}
}
System.out.print("Sorted: ");
for(int j=0 ; j<nums.length ; j++)
System.out.print(nums[j] + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |