Cod*_*and 1 java arrays sorting for-loop bubble-sort
我一直试图用Java中的一个简单的冒泡排序方法来工作,我看不出它为什么不起作用的问题.我希望数组中的最低元素是第一个,最后一个是最高元素.在这里,我给已经排序的数组赋值方法[1, 2, 3, 4].
输出是一个数组[1, 3, 2, 4]- 所以它排序的东西,虽然它不应该.有人看到了这个问题吗?
import java.util.Arrays;
public class BubbleSort {
public static int [] bubblesortMethode(int sortMe[])
{
int nrOfSwaps = 0;
for (int i = 0; i < sortMe.length - 1; i++) {
for (int j = 1; j < sortMe.length; j++) {
if(sortMe[i] > sortMe[j]){
int temp = sortMe[j];
sortMe[j] = sortMe[i];
sortMe[i] = temp;
}
}
nrOfSwaps++;
}
System.out.println("Number of swaps" + " " + nrOfSwaps);
return sortMe;
}
public static void main (String[] args) {
int sortMe [] = {1,2,3,4};
System.out.println(Arrays.toString(bubblesortMethode(sortMe)));
}
}
Run Code Online (Sandbox Code Playgroud)
如果(sortMe[i] > sortMe[j]),你应该只在i <j时交换它们.即使i> j,您的代码也会交换它们.
内部循环变量j应从1开始,i+1以确保j始终> i:
for (int i = 0; i < sortMe.length - 1; i++) {
for (int j = i + 1; j < sortMe.length; j++) {
if(sortMe[i] > sortMe[j]){
int temp = sortMe[j];
sortMe[j] = sortMe[i];
sortMe[i] = temp;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |