Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/65: Рейтинг темы: голосов - 65, средняя оценка - 4.88
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1

Сортировка массива примитивов по убыванию

18.03.2019, 19:21. Показов 12137. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Возник вопрос по сортировке массива примитивов по убыванию.
Нужно реализовать метод
Java
1
public static void sort(int[] array) {}
Вопрос как это сделать наиболее эффективно?

Мне на ум пришло вот такое убогое решение:
Java
1
2
3
4
5
6
public static void sort(int[] array) {        
        Integer[] a = new Integer[array.length];
        for (int i = 0; i < array.length; ++i) a[i] = array[i];
        Arrays.sort(a, Collections.reverseOrder());
        for (int i = 0; i < array.length; ++i) array[i] = a[i];
    }
Ещё читал, что можно оборачивать массив примитивов так:
Java
1
Integer[] b = Arrays.stream(array).boxed().toArray(Integer[]::new);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2019, 19:21
Ответы с готовыми решениями:

Сортировка массива по убыванию
что я делаю не так?eclipse на sort ругается import java.util.Arrays; import java.util.Collections; public class A { ...

Сортировка массива: числа по убыванию с начала, буквы по убыванию в конце
Вывести на экран заданный массив (8,v,q,2,с,7,а,9) элементов отсортировав его таким образом: числа по убыванию с начала массива, а буквы по...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка)
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод обменная сортировка). Или хотя бы без этого...

13
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.03.2019, 19:25
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Java
1
2
3
        int[] squares = { 4, 25, 9, 36, 49 };
        Arrays.sort(squares);
        ArrayUtils.reverse(squares);
а, блин, это из апачей )
1
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
18.03.2019, 19:37  [ТС]
Pablito, спасибо. Это получается надо Apache Commons Lang прикрутить.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.03.2019, 19:49
Цитата Сообщение от ildwine Посмотреть сообщение
Это получается надо Apache Commons Lang прикрутить
реверс руками в пару строк пишется же.
1
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
18.03.2019, 19:55  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
реверс руками в пару строк пишется же
Java
1
2
3
4
5
6
7
8
public static void sort(int[] array){
        Arrays.sort(array);
        for(int i = 0; i < array.length / 2; i++) {
            int temp = array[i];
            array[i] = array[array.length - i - 1];
            array[array.length - i - 1] = temp;
        }
    }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.03.2019, 19:58
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

ildwine, если примитивы...
Java
1
2
3
4
5
return Arrays.stream(array)
                .boxed()
                .sorted(Comparator.reverseOrder())
                .mapToInt(x -> x)
                .toArray();
1
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
18.03.2019, 20:01
Java
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
import java.util.Arrays;
import java.util.Random;
 
public class Task015 {
    private static final int LENGTH = 10;
    private static final int MIN = 0;
    private static final int MAX = 9;
 
    public static void main(String[] args) {
        int[] array = createArray(LENGTH, MIN, MAX);
        System.out.printf("Array: %s;\n", Arrays.toString(array));
 
        int[] sortArray = sortArray(array.clone(), false);
        System.out.printf("Array sort: %s;\n", Arrays.toString(sortArray));
 
        int[] sortReverseArray = sortArray(array.clone(), true);
        System.out.printf("Array sort reverse: %s;\n", Arrays.toString(sortReverseArray));
    }
 
    public static int[] createArray(int length, int min, int max) {
        return new Random().ints(length, min, max + 1).toArray();
    }
 
    public static int[] sortArray(int[] array, boolean reverse) {
        return Arrays.
                stream(array).
                boxed().
                sorted((x, y) -> reverse ? -x.compareTo(y) : x.compareTo(y)).
                mapToInt(Integer::intValue).
                toArray();
    }
}
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.03.2019, 20:02
Цитата Сообщение от iSmokeJC Посмотреть сообщение
если примитивы...
много лишнего происходит
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.03.2019, 20:10
Цитата Сообщение от xoraxax Посмотреть сообщение
много лишнего происходит
Да спору нет
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
18.03.2019, 20:19  [ТС]
Всем спасибо за ответы
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
18.03.2019, 20:48
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

можно без каста в оболочку:

Java
1
2
3
4
5
6
7
8
9
public static int[] sortArray(int[] array, boolean reverse) {
        array = Arrays.stream(array).sorted().toArray();
        if (reverse) {
            int size = array.length;
            int[] finalArray = array;
            array = IntStream.range(1, array.length).map(index -> finalArray[size - index]).toArray();
        }
        return array;
    }
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
18.03.2019, 21:21
ildwine, можно взять Java Primitive, например.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
18.03.2019, 21:43
korvin_, если бы ещё не пришлось мавеном (градл) подключать пакет, было б не плохо (
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
18.03.2019, 21:54
Цитата Сообщение от ArtemFM Посмотреть сообщение
если бы ещё не пришлось мавеном (градл) подключать пакет, было б не плохо (
1) Maven и Gradle — единственные нормальные способы управления зависимостями для Java.
2) Скачай себе jar и извращайся как хочешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2019, 21:54
Помогаю со студенческими работами здесь

Сортировка массива по убыванию
Отсортировать строки массива целых чисел по убыванию. Цикл

Сортировка массива по убыванию
Задан массив A из элементов типа Byte (целые 8-разрядные числа без знака). Составить программу сортировки по убыванию

Сортировка массива по убыванию
Нужно сделать так, массив упорядочить по убиванию,и в первом и во втором случаи Текст программы Program up_repl; Uses crt; Const n...

Сортировка массива по убыванию
Здравствуйте, уважаемые форумчане. Решаю задачу: Для одномерного массива размерностью 10 упорядочить все его элементы в порядке...

Сортировка массива по убыванию
Люди,помогите пожалуйста составить программу на ассемблере. Задание у меня следующее: Задан массив из A элементов типа byte(целое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru