Java的。帮助弄清楚为什么我的代码不起作用

时间:2014-11-10 11:01:02

标签: java arrays sorting

这是我的代码,我无法弄清楚它为什么不起作用。这个算法必须对数组进行排序,但是当我运行它时,它会检索同一个数组。

import java.util.Arrays;

public class BubbleSorted1 {

    public static void main(String[] args) {
        int[] data = {40,20,50,30,10};
        sort(data);
        System.out.println(Arrays.toString(data));

    }

    public static void sort(int[] array){
        for(int barrier = array.length-1; barrier >= 0; barrier--){
            for(int index = 0; index < barrier; index++){
                if(array[index] > array[index] + 1){
                    int tmp = array[index];
                    array[index] = array[index + 1];
                    array[index + 1] = tmp;
                }
            }
        }

    }

}

3 个答案:

答案 0 :(得分:3)

你写array[index] > array[index] + 1。这应该是array[index] > array[index + 1],因为你做的检查总是错误的。

答案 1 :(得分:2)

你这里有一个错字:

if(array[index] > array[index] + 1){

我认为你的意思是:

if(array[index] > array[index + 1]){

第一个条件永远不会成立,因为一个数字(数组的index中包含的值)永远不会超过它本身加一个。

答案 2 :(得分:0)

试试这个..你唯一需要改变的是 IF 条件

 public static void sort(int[] array){
                for(int barrier = array.length-1; barrier >= 0; barrier--){
                    for(int index = 0; index < barrier; index++){
                        if(array[index] > array[index+1]){
                            int tmp = array[index];
                            array[index] = array[index + 1];
                            array[index + 1] = tmp;
                        }
                    }
                }