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

Метод Шелла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Четные в начало массива, нечетные - в конец http://www.cyberforum.ru/cpp-beginners/thread180600.html
четные в начало массива выводит, а вот нечетные не хочет.. пишет вместо них какие-то тысячные числа, которых в исходном массиве нет. пробовал поступить так же как и с четными, перенести в другой массив.. тоже самое получается. например исходный массив 1 2 3 4 5 6 выводит 2 4 6 2343 35546 6443 подскажите пожалуйста, как исправить # include <iostream.h> # include <stdlib.h>
C++ Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать. Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать. Но не получается с borland ничего запускаю файл BC.EXE, открывается окно и зависает. Подскажите пожалуйста где взять рабочий borland 3.1 или какой нибудь другой компилятор который сможет открыть этот файл!!! http://www.cyberforum.ru/cpp-beginners/thread180598.html
C++ Баг в программе по вычислению обратной матрицы
Программа по нахождению обратной матрици!!! не могу найти ошибку - выдаёт одни и те же ответы!!! #include <stdio.h> #include <conio.h> void main() { int a1,a2,a3,b1,b2,b3,c1,c2,c3; int a11,a12,a13,a21,a22,a23,a31,a32,a33; int x1,x2,x3,x4,x5,x6,x7,x8,x9;
Какая функция отвечает за очистку экрана? C++
собственно вопросы в 120 142 170 178 183 208 строках написаны какая функция отвечает за очистку экрана(только не clrscr из conio.h)? #include <iostream> #define maxn 1000 typedef struct //äåê ïðåäñòàâëÿåòñÿ ñîáîé çàïèñü ñ 2 ìÿ ïîëÿìè { int dt,dh; //óêàçàòåëè íà ìåñòî êóäà íàäî äîáàâèòü ýëåìåíò òî áèøü ïîçèöèÿ int a; //ìàññèâ ýëåìåíòîâ
C++ сортировка выбором http://www.cyberforum.ru/cpp-beginners/thread180573.html
не могу разобраться с задачей, не разбираюсь в указателях(((: сортировка выбором символов в строке. Использовать указатели на текущий и минимальный символы. Помогите пожалуйста!
C++ Анкета Сотрудника Задание структуры Задано множество объектов, каждый из которых описывается совокупностью признаков Р1, Р2, Р3, Р4, Р5, Р6 (таблица 1). Требуется: - выбрать объекты, признаки которых удовлетворяют условиям из таблицы 2; - для этих объектов распечатать признаки, указанные в таблице 3. Объект - Анкета Сотрудника подробнее

Показать сообщение отдельно
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
28.10.2010, 08:50     Метод Шелла
Ты в принципе понимаешь правильно. Одна неточность только в том, что по j должен быть цикл, где j пробегает от i до числа меньшего чем inc, и в нём нужно обменивать элементы больший с меньшим. Так как у тебя этого цикла не было, то алгоритм работал неправильно. И inc можно уменьшать не в два раза а в 2.2 для большей эффективности алгоритма. В общем будет где-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    for (int inc = n / 2; inc > 0; inc = inc * 5 / 11)
    {
        for (int i = inc; i < n; ++i)  // идём вверх от inc до n
        {
            int temp = a[i];
 
            int j = i;
            for (; j >= inc && a[j - inc] > temp; j -= inc)
                            // идём в обратном направлении,
                            // сдвигая temp вниз, пока возможно,
                            // а остальные элементы, которые больше temp, вверх
            {
                a[j] = a[j - inc];
            }
 
            // в этом месте выполяется условие a[j - inc] > temp,
            // или j - самый нижний элемент для шага inc.
            // заканчиваем перемещение (сдвиг) temp
            a[j] = temp;
        }
    }
Вместо обмена можно ещё двигать меньший элемент вниз по массиву, пока он не встретит более меньший (т.е. элементы будут в отсортированном порядке). Это и делается в коде выше.
 
Текущее время: 12:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru