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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Milhibisidek
Сообщений: n/a
#1

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

26.11.2010, 22:11. Просмотров 564. Ответов 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;
    }
  }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка методом Шелла (C++):

Сортировка методом Шелла - C++
Помогите! Нужно написать код программы сортировки одномерного массива по убыванию методом Шелла. Код нужен на экзамен.

Сортировка методом Шелла - C++
Помогите с написанием программы, которая реализует сортировку массива методом шелла...я только начинаю изучать с++,поэтому обращаюсь с...

Сортировка методом Шелла - C++
Ребят проверьте программу и исправьте ошибку и скиньте плиз скрин кода программы ну точней вывод ото черное окошко и саму программу без...

Сортировка методом Шелла С++ - C++
Помогите пожалуйста. Нужно отсортировать двухмерный массив методом Шелла. Но отсортировать отсортировать столбцы за значением последнего...

Сортировка методом шелла - C++
День добрый! Хочу разобраться с алгоритмом. Перепишете его пожалуйста без шаблонов, если я правильно понял что это такое. Спасибо. Вот...

Сортировка методом Шелла - C++
Не могу разобраться с сортировкой методом Шелла именно в двумерном массиве. Если, например, нам дан двумерный массив 10 на 10, а элементы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2010, 22:11
Привет! Вот еще темы с ответами:

Сортировка методом Шелла - C++
Помогите найти пример сортировки методом Шелла. Только нужно чтоб массив был рандомный, а потом уже происходила сортировка. Заранее...

Сортировка методом Шелла по убыванию - C++
Помогите дописать программу в 6 кейсе, что бы там было сортировка методом Шелла по убыванию. #include &quot;stdafx.h&quot; //...

Сортировка методом Шелла и другое на С++ - C++
Имеется целочисленный массив ak сщстоящий из 17 элементов: 10, -7, 3, 4, 111, -45, 0, 1234, 52, 77, 23, -675, 1, 20934, 12, -89, 555 1....

Сортировка массива методом Шелла - C++
добрый день нужна помощь, есть код #include &lt;iostream&gt; using namespace std; int main() { // razmer massiva, //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru