Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 4 / 1
Регистрация: 17.05.2020
Сообщений: 17

Оптимизация метода сортировки

17.06.2020, 13:30. Показов 477. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть задание: написать и продемонстрировать сортировку Шелла с различными длинами промежутков.(https://en.wikipedia.org/wiki/Shellsort - здесь в gap Sequence можно посмотреть).
Реализовал пару сортировок Шелла, написал реализацию под JChart, но возникла одна проблема. Есть выбор длины промежутка Хиббарда с О3/2.Реализация работает то правильно.Но данный метод работает хуже, чем другой метод с О2.
Подозреваю, что дело в том, что здесь используются Math.pow и Math.log, они ведь много жрут, по идее. Но я не знаю, как их заменить.Или может у меня ошибка в реализации... Можете помочь с этим?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void sortHibbard(Integer[] array) {//Хиббард
        int temp;
        int k = (int) (Math.log(array.length + 1) / Math.log(2));
        int gap = (int) (Math.pow(2, k) - 1);
 
        while (gap > 0) {
            for (int g = 0; g < gap; g++) {
                for (int d = g + gap; d < array.length; d = d + gap) {
                    for (int i = d; i - gap >= 0; i = i - gap) {
                        if (array[i - gap] <= (array[i])) {
                            break;
                        }
                        temp = array[i];
                        array[i] = array[i - gap];
                        array[i - gap] = temp;
                    }
                }
            }
            k--;
            gap = (int) (Math.pow(2, k) - 1);
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2020, 13:30
Ответы с готовыми решениями:

Оптимизация сортировки
Есть массивы &quot;марка&quot; и &quot;стоимость&quot;. Сортировка идет по массиву стоимость. For i = 1 To 12 For j = i + 1 To 12 If...

Оптимизация сортировки
Мне дан алгоритм сортировки program SelectExchange4; uses Crt; const n=10; type TVector=array of integer; var A :...

Оптимизация метода МД
Доброго времени суток. Надеюсь, что найдется кто-нибудь, кто разбирается в молекулярной динамике и ее реализации. Возникли проблемы по...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.06.2020, 13:54
Цитата Сообщение от I32M6 Посмотреть сообщение
Integer[]
int[] и убираем лишние боксинги?
Цитата Сообщение от I32M6 Посмотреть сообщение
Но данный метод работает хуже, чем другой метод с О2.
как определил? что, конкретно, значит "хуже"?
Цитата Сообщение от I32M6 Посмотреть сообщение
Но я не знаю, как их заменить
ты считаешь, что можешь написать логарифм или степень лучше, чем это сделано в яве?
1
5 / 4 / 1
Регистрация: 17.05.2020
Сообщений: 17
17.06.2020, 16:26  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
int[] и убираем лишние боксинги?
Integer нужен для того, чтобы работало в JChart(библиотека для отображения графиков ) А вообще, это может сильно влиять на производительность?(Хотя в любом случае, у меня везде Integer[], так что ...)
Цитата Сообщение от xoraxax Посмотреть сообщение
как определил? что, конкретно, значит "хуже"?
График быстродействия у данной функции самый плохой, хотя должен быть получше, чем стандартная сортировка Шелла и наравне с другими, которые я реализовал(если смотреть по О-символике).
Цитата Сообщение от xoraxax Посмотреть сообщение
ты считаешь, что можешь написать логарифм или степень лучше, чем это сделано в яве?
Я не сказал, что могу))). Я просто спросил, возможно ли как-то заменить. Препод что-то говорил про побитовый сдвиг, но я прост не очень понимаю, как что-то с ним сделать сделать.
0
Модератор
Эксперт Java
 Аватар для alecss131
2881 / 1387 / 411
Регистрация: 11.08.2017
Сообщений: 4,428
Записей в блоге: 2
17.06.2020, 16:31
Ну как бы Integer это объект (не знаю скок весит, но точно больше int) а int примитив размером 4 байта

Добавлено через 1 минуту
хотя вес тут скорее дело десятое, но имхо с примитивами должно быть получше чем с объектами
1
5 / 4 / 1
Регистрация: 17.05.2020
Сообщений: 17
17.06.2020, 16:32  [ТС]
Вот так это выглядит, но Хиббард должен работать намного лучше...
Миниатюры
Оптимизация метода сортировки  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2020, 16:32
Помогаю со студенческими работами здесь

Оптимизация сортировки пузырьком
Вот стандартный алгоритм сортировки пузырьком for (int i=0; i&lt;cont.size(); i++) for(int j=0; j&lt;cont.size()-1; j++)...

Оптимизация быстрой сортировки
Привет народ. В рамках сближения с haskell решил реализовать различные сортировки, начал с быстрой. В начале реализовал ее сам, а потом...

Оптимизация быстрой сортировки
Форумчане, помогите чем сможете, преподаватель дал задание реализовать свою быстрою сортировку по медиане из трех над массивом строк...

Оптимизация метода контроллера
Доброго времени суток дорогие форумчане. Быть может мой вопрос кому то покажется глупым или не по теме. Не злитесь, примите всё с юмором. И...

Оптимизация метода animate
Как можно объединить два метода анимации в один? $(&quot;#navigation2&quot;).animate({left:&quot;-200px&quot;},{duration:600}) ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru