Bubblesort случайный массив Java - PullRequest
0 голосов
/ 05 ноября 2019

Я очень новичок в Java и играю с алгоритмами сортировки. У меня есть следующий код, работающий для набора массивов. Мне было просто интересно, что мне нужно изменить, чтобы заставить его сортировать массивы случайных длин и целых чисел. Я думаю, что ответ довольно очевиден, любая помощь приветствуется!

   public static void main(String[] args) {
   int number[]={8,5,3,2,9};

   int temp;
   boolean fixed=false;
   while(fixed==false){

       fixed=true;

   for(int i=0; i<number.length-1 ; i++){

       if(number[i] > number[i+1]){
       temp = number[i+1];
       number[i+1]=number[i];

       number[i]=temp;
       fixed=false;

       }

    }
   }
   for(int i=0; i<number.length; i++)
       System.out.println(number[i]);

    }

}

Ответы [ 3 ]

1 голос
/ 05 ноября 2019

Я имею в виду, ваш алгоритм будет работать независимо от длины массива. О том, как сгенерировать такие массивы, вы могли бы сделать это:

int n = Math.random()*10000 + 1; //so its never 0.
int number[] = new int[n];

for(int i=0;i<n;i++) number[i]=Math.random()*10000;

Все остальное остается прежним:).

РЕДАКТИРОВАТЬ: Вы прокомментировали вопрос, что вы лучше сгенерировать массиввзяв ввод с клавиатуры. Вы можете сделать это с помощью сканера.

Scanner scanIn = new Scanner(System.in);

do{
    int n = scanIn.nextInt();
} while (n<1);

int number[] = new int[n];   

for(int i=0;i<n;i++) number[i] = scanIn.nextInt();

scanIn.close();  
0 голосов
/ 05 ноября 2019

Вы можете использовать Scanner Class в java, и вам нужно импортировать java.util.Scanner class

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the array length :");
        int n = sc.nextInt();
        int number[] = new int[n];

        System.out.println("Enter the numbers :");
        for(int i = 0; i < number.length; i++) {
            number[i] = sc.nextInt();
        }
0 голосов
/ 05 ноября 2019

То, что вы ищете, это, вероятно, метод для извлечения вашей пузырьковой сортировки. Обратите внимание, что этот метод изменяет входной массив и не возвращает новый массив.

private static void bubblesort(int[] array) {
    int temp;
    boolean fixed = false;
    while (!fixed) {
        fixed = true;
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] > array[i + 1]) {
                temp = array[i + 1];
                array[i + 1] = array[i];
                array[i] = temp;
                fixed = false;
            }
        }
    }
}

Затем его можно вызывать с использованием разных подходов.

Массив фиксированного размера:

// fixed size array
int number[] = {8, 5, 3, 2, 9};
bubblesort(number);
System.out.println(Arrays.toString(number));

Чтение чисел с System.in.

// read from sys.in like "2 6 4"
Scanner s = new Scanner(System.in);
String line = s.nextLine();
int[] parsedInts = Arrays.stream(line.split("\\s+")).mapToInt(Integer::parseInt).toArray();

bubblesort(parsedInts);
System.out.println(Arrays.toString(parsedInts));
...