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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ файлы http://www.cyberforum.ru/cpp-beginners/thread40770.html
выведите сообщение:" В языке С++ файл рассматривается как поток stream" в файл (d:\C++\det) Считайте сообщение из файла и выведите в окнах одной из компонентов среды С++
C++ Найти сумму цифр числа n Пожалуйста, помогите сделать задачу , спасибо кто откликнется! Дано натуральное число а.Напишите программу которая находит сумму цифр числа n http://www.cyberforum.ru/cpp-beginners/thread40759.html
В квадратной матрицы 5 5 поменять местами Столбец, имеющий наибольший элемент из колонки, которая имеет наименьший элемент среди элементов матрицы. C++
В квадратной матрицы 5 5 поменять местами Столбец, имеющий наибольший элемент из колонки, которая имеет наименьший элемент среди элементов матрицы. есть код на паскале - надо на с++ ... Program...
C++ Подмножества указанной длины в множестве
Прошу помочь мне, задача состоит в том, чтобы вывести на экран все подмножества длиной k, множества n. k<=n в заранее благодарен
C++ Умножение полинома http://www.cyberforum.ru/cpp-beginners/thread40727.html
Написал черновой #include "stdafx.h" #include <iostream> #include <sstream> #include <string> #include <stdlib.h> using namespace std;...
C++ Математическое задание в Borland C++ Граждане программисты помогите пожалуйста решить задачку! Вчера весь день просидел, а теперь и сегодня мучаюсь. http://savepic.ru/687473.jpg Там что-то типа этого должно быть: #include... подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.06.2009, 17:32
1. Убираем template<class T>.
2. Заменяем T на нужный нам тип, например int.
Получаем сортировку Шелла целочисленного массива.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
int increment(long inc[], long size) {
  int p1, p2, p3, s;
 
  p1 = p2 = p3 = 1;
  s = -1;
  do {
    if (++s % 2) {
      inc[s] = 8*p1 - 6*p2 + 1;
    } else {
      inc[s] = 9*p1 - 9*p3 + 1;
      p2 *= 2;
      p3 *= 2;
    }
        p1 *= 2;
  } while(3*inc[s] < size);  
 
  return s > 0 ? --s : 0;
}
 
void shellSort(int a[], long size) {
  long inc, i, j, seq[40];
  int s;
 
  // вычисление последовательности приращений
  s = increment(seq, size);
  while (s >= 0) {
        // сортировка вставками с инкрементами inc[] 
        inc = seq[s--];
 
    for (i = inc; i < size; i++) {
      int temp = a[i];
      for (j = i-inc; (j >= 0) && (a[j] > temp); j -= inc)
        a[j+inc] = a[j];
      a[j+inc] = temp;
    }
  }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru