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

алгоритм Шелла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, сумма цифр является четным или нечетным числом http://www.cyberforum.ru/cpp-beginners/thread668276.html
С клавиатуры вводится натуральное число. Определить, сумма его цифр является четным или нечетным числом.
C++ Разрядность чисел К примеру я ввожу число :1245 (разрядность 4), 123 (разрядность 3) и так далее Нужно реализовать именно рекурсивно. Вот что и я написала но явно криво, понятно что нужен счетчик. #include... http://www.cyberforum.ru/cpp-beginners/thread668265.html
Как выглядеть оператор, если по номеру дня недели необходимо написать его название C++
Оператор выбора switch. Написать пример, как будет выглядеть этот оператор, если по номеру дня недели необходимо написать его название.
Как шифруются ЕХЕ файлы? C++
Как можно зашифровать ЕХЕ файл? Самым простым способом(думаю мне его хватит). Кстати, на С++... Дело в том, что я понятия не имею как это все происходит! А ище, реально шифровать так, что бы...
C++ Найти числа из интервала от 1 до N-1, для которых произведение всех цифр совпадает с суммой http://www.cyberforum.ru/cpp-beginners/thread668246.html
Есть условие задачи: Дано натуральное двухзначные число N. Найти и вывести все числа из интервала от 1 до N-1, для которых произведение всех цифр совпадает с суммой этого числа. Если таких чисел...
C++ Объявить переменную логического типа с именем check и присвойте ей значение “истина” Объявите переменную логического типа с именем check и присвойте ей значение “истина”. Как будет выглядеть оператор if, если необходимо в зависимости от значения переменной check, вывести на экран... подробнее

Показать сообщение отдельно
rostik123456789
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 25

алгоритм Шелла - C++

11.10.2012, 00:28. Просмотров 3182. Ответов 6
Метки (Все метки)

как увеличить скорость этого алгоритма Шелла в 2 раза ....

Где-то читал про Сортировку методом Шелла-Кнута.
Кнут просто подобрал номера h для увеличения скорости сортровкы.
Но я не знаю сделать методом Шелла-Кнута.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/ * Метод Кнута h (k-1) = 3 * h (k) +1, h (t) = 1, где
h (i) - шаг сортировки,
t = ln (n) / ln (3) -1 - число шагов сортировки,
n - длина списка * /
 
void sort_Shell(int *mass, int SIZE)
{
   int step = SIZE / 2;//инициализируем шаг.
    while (step > 0)//пока шаг не 0
    {
      for (int i = 0; i < (SIZE - step); i++)
            {
                 int j = i;
                 while (j >= 0 && mass[j] > mass[j + step])
                    {
                        int temp = mass[j];
                        mass[j] = mass[j + step];
                        mass[j + step] = temp;
                        j--; 
                    }
                }
           step = step / 2;
        }
}
Добавлено через 3 часа 13 минут
сделал, сортирует быстрее, но надо еще быстрее ...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void sort_Shell(int *mass, int SIZE)
{
int step = SIZE / 2, i, j, tmp;
    while (step > 0) {
 
        for(i = step; i < SIZE; ++i) {
            tmp = mass[i];
 
            for(j = i - step; j >= 0 && mass[j] > tmp; j -= step) {
                mass[j+step] = mass[j];
 
            }
            mass[j+step] = tmp;
        }
        step /= 2;
      }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru