Форум программистов, компьютерный форум CyberForum.ru

Сортировка методом Шелла - C++

Восстановить пароль Регистрация
 
Vleind
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 12
20.12.2013, 22:31     Сортировка методом Шелла #1
Не могу разобраться с сортировкой методом Шелла именно в двумерном массиве.
Если, например, нам дан двумерный массив 10 на 10, а элементы нужно расположить в порядке убывания. Как реализовать эту задачу в коде?
Заранее спасибо!

Добавлено через 14 минут
сортировать нужно столбцы матрицы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 22:31     Сортировка методом Шелла
Посмотрите здесь:

Сортировка методом Шелла C++
Сортировка методом шелла C++
C++ Сортировка методом Шелла
Сортировка строк матрицы методом Шелла C++
Cортировка методом Шелла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2013, 22:44     Сортировка методом Шелла #2
Двумерный массив это массив указателей на одномерные массивы.

Добавлено через 59 секунд
Тогда надо константный указатель на столбец передавать и по строкам ходить.
Vleind
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 12
20.12.2013, 22:50  [ТС]     Сортировка методом Шелла #3
Цитата Сообщение от outoftime Посмотреть сообщение
Двумерный массив это массив указателей на одномерные массивы.

Добавлено через 59 секунд
Тогда надо константный указатель на столбец передавать и по строкам ходить.

Я был бы очень признателен, если бы вы помогли реализовать сортировку методом шелла в коде. Даже если это будет сортировка в одномерном массиве, дальше я разберусь.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.12.2013, 22:52     Сортировка методом Шелла #4
C++
1
2
3
4
5
6
7
8
9
template< typename RandomAccessIterator, typename Compare >
void shell_sort( RandomAccessIterator first, RandomAccessIterator last, Compare comp )
{
    for( typename std::iterator_traits< RandomAccessIterator >::difference_type
            d = ( last - first ) / 2; d != 0; d /= 2 )
        for( RandomAccessIterator i = first + d; i != last; ++i )
            for( RandomAccessIterator j = i; j - first >= d && comp( *j, *( j - d ) ); j -= d )
                std::swap( *j, *( j - d ) );
}
Добавлено через 29 секунд
Описание ищи на вики или на форуме.
Yandex
Объявления
20.12.2013, 22:52     Сортировка методом Шелла
Ответ Создать тему
Опции темы

Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru