Сортировка массива Java

Сортировка массива JavaЕсли нужно упорядочить массив чисел, можно применить метод sort() из класса Arrays.

int[] a = new int[10000];
...
Arrays.sort(a);

Этот метод использует усовершенствованную версию алгоритма быстрой сортировки, которая считается наиболее эффективной для большинства наборов данных.

Класс Arrays содержит несколько удобных методов, предназначенных для работы с массивами. Эти методы приведены в конце данного раздела. Программа, код которой будет представлен в конце статьи, создает массив и генерирует случайную комбинацию чисел для лотереи. Например, если нужно выиграть "5 из 35", программа может вывести следующее сообщение:Попробуйте такие числа, и станете богатым.

4, 11, 23, 25, 34

Чтобы выбрать случайные числа, массив numbers сначала заполняется числами 1, 2,..., n:

int[] numbers = new int[n];
for(int i = 0; i < numbers.length; i++)
numbers[i] = i+1;

Второй массив предназначен для хранения сгенерированных чисел:

int[] result = new int[k];

Теперь сгенерируем k чисел. Метод Math.random() возвращает случайное число с плавающей точкой, лежащее в интервале от 0(включительно) до 1(это значение не принадлежит интервалу). Умножая результат на число n, получим случайное число, лежащее между 0 и n-1.

int r = (int) (Math.random() * n);

Присвоим i-е число i-му элементу массива. Сначала там будет помещено само число n, однако, как будет показано ниже, содержимое массива number будет изменяться после генерации каждого нового числа:

result[i] = numbers[r];

Теперь вы должны убедиться, что ни одно число не повторится - все номера должны быть разными. Следовательно, нужно поместить в элемент number[r] последнее число, содержащееся в массиве, и уменьшить n на единицу.

numbers[r] = numbers[n - 1];
n--

Обратите внимание на то, что при каждой генерации мы получаем индекс, а не само число. Этот индекс относится к массиву, содержащему числа, которые еще не были выбраны.

После генерации k номеров полученный массив сортируется, чтобы результат выглядел более элегантно:

Arrays.sort(result);
for(int i = 0; i < result.length; i++)
System.out.println(result[i]);

import java.util.Arrays;
import java.util.Scanner;

public class LotteryDrawing {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println(" ? ");
int k = in.nextInt();

System.out.println(" ? ");
int n = in.nextInt();

//    1 2 3 ... n
int[] numbers = new int[n];
for(int i = 0; i < numbers.length; i++)
numbers[i] = i+1;

//  k       
int[] result = new int[k];
for(int i = 0; i < result.length; i++) {
//     0  n - 1
int r = (int) (Math.random() * n);

//   
result[i] = numbers[r];

//   
numbers[r] = numbers[n - 1];
n--;
}
//   
Arrays.sort(result);
System.out.println("     ");
for(int r : result)
System.out.println(r);
}

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *