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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отсортировать массив по невозрастанию сортировкой прямым обменом http://www.cyberforum.ru/cpp-beginners/thread198257.html
. Отсортировать массив из N символов в невозрастающем порядке с помощью сортировки прямым обменом. (заранее спасибо)
C++ Оллимпиадное задание Задание. Тестирование студентов по некоторой дисциплине. Программа предлагает пользователю ответить на определенное количество вопросов (не менее 10). Каждый вопрос включает несколько вариантов ответа (не менее 4-х). Программа последовательно предъявляет пользователю вопросы и варианты ответов и ожидает ввода от пользователя выбранного варианта. В конце программа отображает процент правильных... http://www.cyberforum.ru/cpp-beginners/thread198255.html
C++ Вычислить произведение элементов массива, принадлежащих заданному отрезку
В одномерном массиве, состоящем из N целых чисел, вычислить: 1. индекс минимального элемента; 2. произведение элементов массива, принадлежащих заданному отрезку . написал прогу для первого условия, не проходит тест. кто может подсобите, код ниже // laba 6 zad 1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream>
C++ Массивы(статические)
Найти максимальную по длине монотонную (т. е. либо неубывающую, либо невозрастающую) подпоследовательность заданного массива целых чисел P.S. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит реальную длину массива (не больше N) и работает с...
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)); double f3 = 1.0 - e; double f2 = pow(f3,4.0); double f = (f1 * f2) - S; double f = ((pow(24/A,14)) * (pow((1.0 - (exp(-0.18*pow(pow(18.0/A,0.5)*(E-A),0.5)))),4.0))) - S;
C++ При отображении выборки из структуры отображаются артефакты Здравствуйте, уважаемые форумчане. Имеется программа на Си. Компилятор использую Dev-cpp. Вот сам проект Программа представляет из себя информационно-поисковую систему. При выборе пункта 5 программа должна отображать все телепрограммы с жанром "спорт",а она стала отображать всю базу. Что еще интереснее отображает даже позиции, которые были удалены. Вместо них отображает артефакты. Один... подробнее

Показать сообщение отдельно
Milhibisidek
Сообщений: n/a
26.11.2010, 22:11     Сортировка методом Шелла
Сначала сравниваются и сортируются между собой ключи которые стоят на расстоянии 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;
    }
  }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru