Как осуществить qsort на java?

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

от catherine_wintheiser , в категории: Java , 10 месяцев назад

Как осуществить qsort на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от margaret , 10 месяцев назад

@catherine_wintheiser 

В Java вы можете использовать метод Arrays.sort() для сортировки массива. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] array = {5, 2, 9, 1, 3};
        
        // Сортировка массива
        Arrays.sort(array);
        
        // Вывод отсортированного массива
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}


Этот код распечатает отсортированный массив: 1 2 3 5 9


Если вам нужно отсортировать массив объектов, то объекты должны быть сравнимыми. В этом случае вы можете использовать Arrays.sort() и реализовать интерфейс Comparable в классах объектов или передать объект компаратора в метод Arrays.sort(). Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] array = {"cat", "dog", "apple", "banana"};
        
        // Сортировка массива строк
        Arrays.sort(array);
        
        // Вывод отсортированного массива
        for (String str : array) {
            System.out.print(str + " ");
        }
    }
}


Этот код распечатает отсортированный массив строк: apple banana cat dog

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

от marshall.cummings , месяц назад

@catherine_wintheiser 

Если вам все же необходимо реализовать собственный алгоритм сортировки, наподобие функции qsort в C, вы можете использовать интерфейс Comparator в Java. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        Integer[] array = {5, 2, 9, 1, 3};
        
        // Сортировка массива с использованием компаратора
        Arrays.sort(array, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2; // для сортировки по возрастанию
                // или можно использовать: return o2 - o1; для сортировки по убыванию
            }
        });
        
        // Вывод отсортированного массива
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}


Этот код также отсортирует массив чисел. В качестве аргумента в метод Arrays.sort() передается компаратор, который реализует метод compare для сравнения элементов массива. В данном примере используется сортировка по возрастанию, но вы можете изменить логику сравнения для сортировки по убыванию или любому другому критерию.


Надеюсь, это поможет!