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

Сортировка методом центрированных вставок - C++

Восстановить пароль Регистрация
 
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
21.09.2012, 17:42     Сортировка методом центрированных вставок #1
Доброго времени суток. Помоги доделать программу.
Я решил сделать эту сортировку через массивы(возможно зря)). И теперь, допусти если у нас элемент их исходного массива imas больше чем последний из второго массива vmas, то сдвинуть все элементы второго массивы на 1 назад, освободив место для нового элемента. + Нужно еще чтобы элемент сравнивался не только со средним элементом vmas, но и если больше то с последующими.Как-то так)
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    cout<<"\tВведите размер массива\n";
 
    int size;
    cin>>size;
    int *imas = new int[size];
    int *vmas = new int[size];
 
    cout<<"\tВведите последовательность\n";
    for(int i=0;i<size;i++)
    {
        cout<<"imas["<<i + 1<<"] = ";
        cin>>imas[i];
    }
    int q=size/2;
    vmas[q]=imas[0];
 
    //Сортируем
    for(int i=1;i<size;i++)
    {
        if(imas[i]>vmas[size/2])
            vmas[q+1]=imas[i];
        else
            vmas[q-1]=imas[i];
            
    }
    for(int i=0;i<size;i++)
        cout<<vmas[i]<<endl;
           delete []imas;
    delete []vmas;
    system("pause");
    return 0;
}
Добавлено через 37 минут
Подскажите хотябы что мне использовать и т.п
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
21.09.2012, 17:53     Сортировка методом центрированных вставок #2
Вектора в помощь! Ну или бинарные деревья!
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
21.09.2012, 17:55  [ТС]     Сортировка методом центрированных вставок #3
А с массивами никак не выйдет?)
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
21.09.2012, 18:04     Сортировка методом центрированных вставок #4
Так а какой массив тебе надо отсортировать, первый или второй?
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
21.09.2012, 18:17  [ТС]     Сортировка методом центрированных вставок #5
Первый(imas) - массив с исходными элементами. Второй(vmas) - массив в котором происходит сортировка.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
21.09.2012, 18:21     Сортировка методом центрированных вставок #6
так делай проще! С одним массивом! Если первый элемент больше второго, то поменять местами. И обойти массив такое количество раз, сколько элементов в нем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 15:59     Сортировка методом центрированных вставок
Еще ссылки по теме:

Создать динамический целочисленный массив, и отсортировать его методом вставок C++
C++ Сортировка списка методом простых вставок
C++ Сортировка двумерного массива методом вставок с "конфеткой"

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

Или воспользуйтесь поиском по форуму:
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
22.09.2012, 15:59  [ТС]     Сортировка методом центрированных вставок #7
Да это понятно) Просто мне нужно реализовать к завтрашнему дню именно эту сортировку. А она делается с 2 массивами(списками,векторами,...)

Добавлено через 1 час 31 минуту
До сих пор пытался сделать, ну всеравно до меня не доходит. Как мне сделать, чтобы исходный элемент (a например) сравнивался и центральным элементом рабочего массива (c) и если он больше, то сравнивается со следующим(s). Если a больше, чем с, но меньше s, то s сдвигаем на один элемент вправо особождая место для a и т.д.
Подскажите плиз)

Добавлено через 20 часов 5 минут
Т.к. я нигде не нашел пример реализации этой сортировки. Вот вылаживаю. Может кому-нибудь понадобится.
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
#include<iostream>
using namespace std;
 
int m1[1000],m2[1000],i,n,centre,l,r,k,j;
 
int main()
{
    cin >> n;
    for (i=1;i<=n;i++)
        cin >> m1[i];
 
    centre=n/2;
    l=centre;
    r=centre;
 
    m2[centre]=m1[1];
    for(i=2;i<=n;i++)
    {
        k=centre;
        if( m2[k]>m1[i])
        {
            while ((k>=l)&&(m1[i]<m2[k]))
                k--;
                for(j=l;j<=k;j++)
                    m2[j-1]=m2[j];
 
        }
        else
        {
            while ((k<=r)&&(m1[i]>=m2[k]))
                k++;
            for(j=r;j>=k;j--)
                m2[j+1]=m2[j];
        }
        m2[k]=m1[i];
        if (k<centre) l--;
        else r++;
        if (l==1)
        {
            for (j=r;j>=1;j--)
                m2[j+1]=m2[j];
            r++;
            l++;
            centre=(l+r)/2;
        }
    }
 
    for (i=l;i<=r;i++)
        cout << m2[i]<< ' ';
}
Yandex
Объявления
22.09.2012, 15:59     Сортировка методом центрированных вставок
Ответ Создать тему
Опции темы

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