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

Заполнение массива методом Седжвика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ GNU C++ где де ты где?!?! http://www.cyberforum.ru/cpp-beginners/thread618435.html
Где можно вот просто взять и скачать GNU C++! Вот так прям чтоби без флуда в ответ без левих ссылок, без издевок, без подстав, вот просто взять и скачать!?!?
C++ Запуск exe из ресурсов без распаковки Всем доброго времени суток! Сразу оговорка: нужно для легальных целей - защита другой программы от декомпиляции. Никаких вирусов и прочих вредителей... Можно ли запустить exe из ресурсов без распаковки на диск? И лучше перед запуском проводить манипуляции с его бинарным кодом (дешифровка, например)... Суть в следующем: есть программа, написанная на ЯП AutoIt, декомпилировать которую -... http://www.cyberforum.ru/cpp-beginners/thread618432.html
Придумать алгоритм C++
Есть такая задачка : в массиве из n элементов за время nlogn найти пару элементов , сумма которых равна k , или сказать , что такой нет . Собственно , код мне не нужен (сам напишу) , помогите с алгоритмом . Я сам не могу ничего сообразить (разве что банальный перебор , но там сложность n^2)
Массив указателей C++
Приветствую всех, кто посетил эту тему. В данный момент я читаю книгу "С++. Руководство для начинающих." (Герберт Шилдт ) и столкнулся с вот таким исходником : #include <iostream> #include <cstring> using namespace std; int main() { char *dictonary = {
C++ Не появляется диалоговое окно http://www.cyberforum.ru/cpp-beginners/thread618371.html
В visual studio 2010 в программе нет ошибок, но диалоговое окно с результатом ее работы не появляется. Что делать?
C++ win32api странности при выводе на экран Доброго времени суток. Возникла проблема: при использовании в цикле TextOut на экран выводится только одна первая цифра, считанная из массива matr и переведенная в символ, хотя их должно быть как минимум 49:) Собственно вопрос - почему?) И еще вопрос: почему если выводить один символ (например букву "Z"), то он выводится корректно, а если попытаться вывести несколько, то получаются какие-то... подробнее

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

Заполнение массива методом Седжвика - C++

03.07.2012, 16:52. Просмотров 745. Ответов 1
Метки (Все метки)

Можно ли как-то заполнить массив методом Седжвика по другому, что бы не было столько нулей, сколько сейчас.(ну т.е. чтобы значительно меньше).

или если массив заполняется рандомно, то как сделать так, чтобы сортировка Шелла работала?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
//--------------------------------------------------------------------------------------------------------------------------
/* Рассчитывает последовательность
   приращений рекомендуюмую при больших
   размерах сортируемой последовательности */
int increment(long inc[], long size) {
    int i = 0;
    inc[i] = 1;
 
    do {
        i++;
        inc[i] = 3*inc[i-1] + 1;
    } while (inc[i] < size);
 
    return (i < 2) ? 0 : i-2;
}
//--------------------------------------------------------------------------------------------------------------------------
template<class T>
void shellSort(T inc[], long size) {
    /* максимальное количество рассчитываемых
       приращений = 20 */
    long d, i, j, dseq[20];
    int di;
 
    /* Рассчитываем последовательность
       приращений */
    di = increment(dseq, size);
 
    while (di >= 0) {
        /* Приращение на данном шаге */
        d = dseq[di--];
 
        /* этот цикл делает проход "пузырька" в том числе и
           для последней последовательности, когда d=1, поэтому
           вызывать в конце InsertSort или какую-либо другую
           элементарную сортировку - не требуется */
        for (i = d; i < size; i++) {
            T tmp = inc[i];
            for (j = i-d; (j >= 0) && (inc[j] > tmp); j -= d) {
                inc[j+d] = inc[j];
            }
            inc[j+d] = tmp;
        }
    }
    /* Не требуется вызывать InsertSort или BubbleSort
       т.е. ко всей последовательности во вложенном цикле
       уже был применен метод пузырька */
}
 
void main ()
{   
    long a[1000] = {};
    increment(a, 1000);
    shellSort(a, 1000);
    for (int i = 0; i < 1000; i++)
        cout << a[i] << " ";
 
    _getch();
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru