Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Монах
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 3
#1

Дополнения к алгоритму Шелла - C++

19.12.2009, 01:43. Просмотров 562. Ответов 1
Метки нет (Все метки)

Задача.
Запрограммировать алгоритм Шелла сортировки одномерного массива действительных чисел. Подсчитать количество перестановок и сравнений элементов и указать массив из элементов {1,2…N}, для которого требуется максимальное количество перестановок и сравнений.

Вопросы:
1. Как правильно оформить процедуру ввода массива и вывода его на экран?
2. Как подсчитать кол-во перестановок и сравнений и вывести на экран массив, для которого требуется максимальное количество перестановок и сравнений?

Код алгоритма представлен ниже.


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
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
 
void shell_sort(int array[], int N){
    int i;
    int temp, Middle, change;
    Middle=N/2;
    do
    {
        do
        {
            change=0;
            for (i=0; i<N-Middle; i++)
                if (array[i]>array[i+Middle])
                {
                    temp=array[i];
                    array[i]=array[i+Middle];
                    array[i+Middle]=temp;
                    change=1;
                }
        }while (change);
    }while (Middle!=Middle/2);
}
 
main(){
    int array[100], i, Size;
    cin>>Size;
    for (i=0; i<Size; i++)
        cin>>array[i];
    shell_sort(array, Size);
    for (i=0; i<Size; i++)
        printf("%d",array[i]);
    getch(); 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 01:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дополнения к алгоритму Шелла (C++):

Visual Studio перестал показывать дополнения к классам - C++
Не знаю куда правильно задать вопрос, но программирую я на C++. Вопрос по Visual Studio. Сломалась функция показа возможных методов для...

Вот у меня visual studia 2012 ultimate. в ней нету дополнения с++11 - C++
Вот у меня visual studia 2012 ultimate. в ней нету дополнения с++11 как я понял, в этой версии, в c++ нету дополнения c++11. его можно...

Создать программу, которая бы обеспечивала создание, просмотр, дополнения и изъятия из файла - C++
Создать программу, которая бы обеспечивала создание, просмотр, дополнения и изъятия из файла, содержащего информацию об итогах сессии на...

Как создать программу, которая бы обеспечивала создание, просмотр, дополнения и извлечение данных из файла - C++
создать программу, которая бы обеспечивала создание, просмотр, дополнения и извлечение данных из файла, содержащего информацию об итогах...

Дополнения к языку программирования для программиста. Что ещё, кроме языка, собственно, я должен знать? - C++
Всем здрасте!Я начинающий программист и и недавно мне кроме языка программирования стало интересно , что еще кроме языка собственно я...

Программа, позволяющяя для заданного натурального пятизначного числа выполнить замену его чётных цифр на их дополнения до 9 - C++
Как написать данную программу, не используя массивы и циклы. На достаточно простом и понятном для новичка коде? К сожалению, пока они не...

1
Aye Aye
369 / 283 / 36
Регистрация: 17.12.2009
Сообщений: 567
19.12.2009, 14:00 #2
C++
1
2
3
4
5
6
7
8
//это ввод
void input(double array[],n){for (i=0; i<n; i++) cin>>array[i];}
//это вывод на экран
void print(double array[],n){for (i=0; i<n; i++) cout << array[i]<< " ";cout << endl;}
 
//исользование
input(array[],Size);
print(array[],Size);
а начсет подсчета перестановок: сразу же за дейстивем перестановки в том же блоке операторов следут поставить счетчик, и увеличивать его каждый раз. q++; эта переменная счетчик должна быть глобальной по отношению ко всем циклам обхода массива. выводить её можно ваще в виде возвращаемого значние функции сортировки. int /*void*/ shell_sort(int array[], int N).
C++
1
2
3
input(array[],Size);
cout << "Перестановок " << shell_sort(array, Size) << endl;
print(array[],Size);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2009, 14:00
Привет! Вот еще темы с ответами:

ШЕЛЛА - C++
Нигде не могу найти сортировку методом Шелла. Сделал по схеме насси,но она не работает, исправьте, плиз: void shella(int mas,int n) ...

алгоритм Шелла - C++
как увеличить скорость этого алгоритма Шелла в 2 раза .... Где-то читал про Сортировку методом Шелла-Кнута. Кнут просто подобрал...

Сортировка Шелла - C++
//Сортировка Шелла void Shell(int **matr, int n1) { for( i=0;i&lt;n1;i++) { printf(&quot;Введет элемент равный в строке номер ...

Сортировка Шелла - C++
Здраствуйте! Обьясните пожалуйста сортировку Шелла ну или хотя бы скиньте код самой сортировки.


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

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

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