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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать массив по невозрастанию сортировкой прямым обменом http://www.cyberforum.ru/cpp-beginners/thread198257.html
. Отсортировать массив из N символов в невозрастающем порядке с помощью сортировки прямым обменом. (заранее спасибо)
C++ Оллимпиадное задание Задание. Тестирование студентов по некоторой дисциплине. Программа предлагает пользователю ответить на определенное количество вопросов (не менее 10). Каждый вопрос включает несколько вариантов... http://www.cyberforum.ru/cpp-beginners/thread198255.html
C++ Вычислить произведение элементов массива, принадлежащих заданному отрезку
В одномерном массиве, состоящем из N целых чисел, вычислить: 1. индекс минимального элемента; 2. произведение элементов массива, принадлежащих заданному отрезку . написал прогу для первого...
C++ Массивы(статические)
Найти максимальную по длине монотонную (т. е. либо неубывающую, либо невозрастающую) подпоследовательность заданного массива целых чисел P.S. При выполнении работы используются статические массивы....
C++ Наверное синтаксическая ошибка http://www.cyberforum.ru/cpp-beginners/thread198244.html
Выдает ошибку Unit1.cpp(35): E2141 Declaration syntax error double funBendel (double A, double E, double S) { double f1 = pow(24/A,14); double e = exp(-0.18*pow(pow(18.0/A,0.5)*(E-A),0.5));...
C++ При отображении выборки из структуры отображаются артефакты Здравствуйте, уважаемые форумчане. Имеется программа на Си. Компилятор использую Dev-cpp. Вот сам проект Программа представляет из себя информационно-поисковую систему. При выборе пункта 5... подробнее

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

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

26.11.2010, 22:11. Просмотров 584. Ответов 0
Метки (Все метки)

Сначала сравниваются и сортируются между собой ключи которые стоят на расстоянии d друг от друга,после этого процедура повторяется для некоторых меньших значений d, а заканчивается сортировка Шелла упорядочиванием элементов при d=1.

Ребят, помогите разобраться. я в этом дуб дерево хвойное, а на завтра мне надо сдать КР..

Зарание спасибо

Я выдрал код из википедии но при запуске вылетает путое окно Form1
Код
int increment(long inc[], long size) {
// inc[] массив, в которые заносятся инкременты
// 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;
// заполняем массив, пока текущая инкремента хотя бы в 3 раза меньше количества элементов в массиве
  } while(3*inc[s] < size);
 
  return s > 0 ? --s : 0;// возвращаем количество элементов в массиве
}

template<class T>
void shellSort(T a[], long size) {
// inc инкремент, расстояние между элементами сравнения
// i и j стандартные переменные цикла
// seq[40] массив, в котором хранятся инкременты
  long inc, i, j, seq[40];
  int s;//количество элементов в массиве seq[40]
 
  // вычисление последовательности приращений
  s = increment(seq, size);
  while (s >= 0) {
	//извлекаем из массива очередную инкременту
	inc = seq[s--];
// сортировка вставками с инкрементами inc
    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];
// после всех сдвигов ставим на место j+inc элемент, который находился на i месте
      a[j+inc] = temp;
    }
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru