如何对冒泡排序

时间:2015-11-28 06:42:33

标签: java arrays sorting random bubble-sort

我试图运行一个可以打印1000个随机数的程序,然后将它们排序到冒泡排序中,但是当我运行这个代码时,它会打印我的1000个随机数,但不会将其排序。请帮我理解。

import java.util.Random;
import java.util.Arrays;
public class JavaApplication3 {
    public static void main(String [] args){
        Random g = new Random();

        int [] number = new int [1000];

        System.out.print("Random Numbers:");
        for (int d = 0 ; d<number.length ; d++){
            int RandomG = g.nextInt(1000)+1;
            System.out.print(" " +RandomG);
        }

        System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));
    }
    public static int [] BubbleSortAsceMethod(int[] number){
        int temp;

        for(int i = 0 ; i < number.length-1 ; i++){
            for ( int j = 1 ; j < number.length-1 ; j++){
                if ( number[j-1] < number[j]){
                    temp = number[j-1];
                    number[j-1] = number[j];
                    number[j] = temp;
                }
            }
        }
        return number;   
    }
}

3 个答案:

答案 0 :(得分:1)

花时间,笔和纸,绘制代码实际执行的操作。虽然缩进很难读,但我相信你的错误在于双循环(J错了)祝你好运!

答案 1 :(得分:0)

数字不按顺序,当数字[j-1]大于数字[j](不小于)时需要交换,除非您希望它们按相反的顺序排序。

内环应该是j&lt; number.length - i,而不是j&lt; number.length - 1

       for (int j = 1 ; j < number.length - i ; j++){
            if (number[j-1] > number[j]){

答案 2 :(得分:0)

您没有使用随机数初始化“数字”数组,而只是将其大小设置为1000.我认为这就是为什么它没有整理出来。你必须把你的“数字”数组放在第一个for循环中,然后用这样的随机值初始化/填充它: -

for (int d = 0 ; d<number.length ; d++){
    int RandomG = g.nextInt(1000)+1;
    number[d] = RandomG;
    System.out.print(" " +RandomG);
    }

以下是完整代码: -

package stackoverflow;
import java.util.Random;
import java.util.Arrays;
/**
 *
 * @author User
 */
public class StackOverFlow {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Random g = new Random();

        int [] number = new int [1000];

        System.out.print("Random Numbers:");
        for (int d = 0 ; d<number.length ; d++){
            int RandomG = g.nextInt(1000)+1;
            number[d] = RandomG;
            System.out.print(" " +RandomG);
            }

        System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number)));

    }
    public static int [] BubbleSortAsceMethod(int[] number){
        int temp;

        for(int i = 0 ; i < number.length-1 ; i++){
            for ( int j = 1 ; j < number.length-i-1 ; j++){
                if ( number[j-1] > number[j]){
                    temp = number[j-1];
                    number[j-1] = number[j];
                    number[j] = temp;
                }
            }
        }
        return number;  
    }

}