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

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

Восстановить пароль Регистрация
 
Milhibisidek
Сообщений: n/a
26.11.2010, 22:11     Сортировка методом Шелла #1
Сначала сравниваются и сортируются между собой ключи которые стоят на расстоянии 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++ Сортировка методом Шелла
Сортировка методом Шелла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru