Форум программистов, компьютерный форум 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 z15_1_6; const n=5; const m=5; var massiv:array of integer; row,column,exchange:integer; flag:boolean; begin
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; ////////////////////////////////////////////////////////////////////////// class Polinomial{ private: stringstream polinomial;
C++ Математическое задание в Borland C++ Граждане программисты помогите пожалуйста решить задачку! Вчера весь день просидел, а теперь и сегодня мучаюсь. http://savepic.ru/687473.jpg Там что-то типа этого должно быть: #include <iostream.h> #include <iomanip.h> #include <math.h> main() { подробнее

Показать сообщение отдельно
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
17.06.2009, 17:04     Сортировка методом шелла
День добрый! Хочу разобраться с алгоритмом. Перепишете его пожалуйста без шаблонов, если я правильно понял что это такое. Спасибо.

Вот алгоритм:
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
38
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;
}
 
template<class T>
void shellSort(T 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++) {
      T temp = a[i];
      for (j = i-inc; (j >= 0) && (a[j] > temp); j -= inc)
        a[j+inc] = a[j];
      a[j+inc] = temp;
    }
  }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru