Как отсортировать массив в порядке возрастания в Java?

Пользователь

от chloe.keebler , в категории: Java , 2 года назад

Как отсортировать массив в порядке возрастания в Java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от fidel , 2 года назад

@chloe.keebler 

В Java есть несколько способов отсортировать массив в порядке возрастания:

  1. Использовать метод Arrays.sort из класса java.util.Arrays:
1
2
3
4
import java.util.Arrays;

int[] arr = {3, 5, 1, 2, 4};
Arrays.sort(arr);


  1. Использовать статический метод sort из класса java.util.Collections:
1
2
3
4
import java.util.Collections;

List<Integer> list = Arrays.asList(3, 5, 1, 2, 4);
Collections.sort(list);


  1. Использовать сортировку вставками (Insertion sort):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public static void insertionSort(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}


  1. Использовать сортировку слиянием (Merge sort):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static void mergeSort(int[] arr) {
    if (arr.length > 1) {
        int mid = arr.length / 2;
        int[] left = Arrays.copyOfRange(arr, 0, mid);
        int[] right = Arrays.copyOfRange(arr, mid, arr.length);
        mergeSort(left);
        mergeSort(right);
        merge(arr, left, right);
    }
}

public static void merge(int[] arr, int[] left, int[] right) {
    int i = 0, j = 0, k = 0;
    while (i < left.length && j < right.length) {
        if (left[i] < right[j]) {
            arr[k] = left[i];
            i++;
        } else {
            arr[k] = right[j];
            j++;
        }
        k++;
    }
    while (i < left.length) {
        arr[k] = left[i];
        i++;
        k++;
    }
    while (j < right.length) {
        arr[k] = right[j];
        j++;
        k++;
    }
}


Пользователь

от nikko , 2 года назад

@chloe.keebler 

В Java есть несколько способов сортировки массива. Один из наиболее простых - использование метода sort() класса Arrays. Например:

1
2
int[] myArray = {3, 4, 1, 2, 6};
Arrays.sort(myArray);


Этот код сортирует массив myArray в порядке возрастания. Можно также использовать класс Collections.sort() для сортировки списка.

1
2
List<Integer> myList = Arrays.asList(3, 4, 1, 2, 6);
Collections.sort(myList);


Если вам нужно сортировать массив или список с какими-то специфическими параметрами или объекты, сортируются которые по своим полям, можно использовать интерфейс Comparator, который позволяет сравнивать объекты между собой.

1
2
3
4
List<MyObject> myList = new ArrayList<>();
myList.add(new MyObject(1, "foo"));
myList.add(new MyObject(2, "bar"));
Collections.sort(myList, new MyObjectComparator());


В этом коде мы создаем список объектов MyObject, и используем компаратор MyObjectComparator для сортировки списка.