Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
1

Merge sort, сортирует не в том порядке что нужно

24.08.2015, 23:11. Показов 892. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, правильна ли в данном коде последовательность исполнения сортировки методом merge sort? Я пошагово прошлась и последовательность не совсем такая как надо, или может я не правильно понимаю как все должно работать,, Спасибо заранее
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
65
66
67
68
69
70
71
72
#include<iostream>
void MergeSort(int C[], int left, int right);
void Reflect(int C[], int nsize);
void Merge(int C[], int left, int mid,  int right);
 
using namespace std;
const int size=9;
int main()
{
 
    int Ar[size]={5,4,1,8,7,2,6,3,9};
    Reflect(Ar, size);
    int left=0, right=size;
    MergeSort(Ar, left, right);
    cout<<"\n";
    Reflect(Ar, size);
}
 
 
void MergeSort(int C[], int left, int right)
{ 
    if(right>left)
    {
        int mid=(left+right)/2;
        MergeSort(C, left, mid);
        MergeSort(C, mid+1, right);
        Merge(C, left, mid, right);
    }
}
void Merge(int C[], int left, int mid,  int right)
{
    int G[size]={0};    
    int i=left, k=left, j=mid+1;
    while(i<=mid && j<=right&& j<size)
    {
        if(C[i]<=C[j])
        {
            G[k]=C[i];
            i++;
            k++;
        }
        else if (C[i]>C[j])
        {
            G[k]=C[j];
 
            j++;
            k++;
        }
    }
    while(i<=mid)
    {
        G[k]=C[i];
        k++;
        i++;
    }
    while(j<=right && j<size)
    {
        G[k]=C[j];
        k++;
        j++;    
    }
    for(i=left; i<k; i++)
    {
        C[i]=G[i];
    }
}
 
void Reflect(int C[], int nsize)
{
    for(int i=0; i<nsize; i++)
        cout<<C[i]<<"\t";
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2015, 23:11
Ответы с готовыми решениями:

Merge Sort
написал реализацию Merge Sort но что то не так получилось))) помогите найти ошибку ) using...

Merge sort
Было 100500 раз, знаю. Видел коды, но всеравно не понимаю. У меня есть класс Array. class Array {...

Merge sort
Здравствуйте, пытаюсь написать сортировку по методу слияния (merge). не получается, подскажите...

Не работает merge sort
Пытаюсь реализовать merge sort, но она не работает. Где ошибка?: Array = def...

2
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
25.08.2015, 14:37 2
if(C[i]<=C[j])
заменить на
C++
1
if(C[i]>=C[j])
Цитата Сообщение от Melany Посмотреть сообщение
else if (C[i]>C[j])
а зачем тут вообще else if, если третьего по любому не дано? убрать условие вообще!
1
21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
27.08.2015, 13:03  [ТС] 3
Спасибо, хотя вопрос заключался в другом)))), в моем понимании, сначала надо было отсортировать элементы [0] и [1] , а потом [2]и [3], точно также как :
[4] и [5] , а потом [6]и [7],
и в конце [5]
потом уже между собой по порядку [0][1][2]3],
[4][5][6]7]
а потом между собой все.
А по заданному коду сортируются совсем в другой последовательности,
0
27.08.2015, 13:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2015, 13:03
Помогаю со студенческими работами здесь

Реализация merge sort на C++14
Помогите найти (или покажите сами) профессиональную реализацию merge sort с использованием 14-го...

Сортировка слиянием (Merge sort)
Пожалуйста, помогите сортировать лист в C++ только надо именно слиянием отсортировать

Слияние массивов. Merge sort
Пытаюсь сделать сортировку больших обьемов данных. В моем случае файл с double числом в каждой...

Merge Sort - Ошибка в коде
Всем привет, написал алгоритм сортировки слиянием, но работает он неправильно. Помогите найти...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru