Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 3

Подскажите что не в моем коде(Сортировка слиянием)

05.04.2012, 03:36. Показов 1165. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я не очень понимаю где именно неверно в моем коде. Хотел рассортировать массив методом слияния. Если найдете заранее спасибо!

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
73
74
75
76
77
78
79
80
81
82
83
84
85
int* getFirstHalf(int* array, int n){
    int size=n/2+n%2;
   int* a=new int[size];
   for (char i=0; i<size;i++)
    a[i]=array[i];
   return a;
}
 
int* getSecondHalf(int* array, int n){
   int size=n/2;
   int* b=new int[size];
   for (char i=0; i<size; i++)
      b[i]=array[i+size];
   return b; 
}
 
 
 
int* merge(int* a, int* b, int n){
    int* c = new int[n];
   int imax=sizeof(a)/4;
   int jmax=sizeof(b)/4;
   int i=0;
   int j=0;
   int k=0;
   while (i<=n/2+n%2 && j<=n/2)
   {
    if (a[i]<b[j]){
        c[k]=a[i];
        i++;
        k++;
    }
        else{
        c[k]=b[j];
        k++;
        j++;
    }
    if (i>=n/2+n%2)
      {
        for (;j<n/2;j++)
         {
            c[k]=b[j];
            k++;
         }
      }
      if (j>=n/2)
      {
        for (;i<n/2+n%2;i++){
            c[k]=a[i];
            k++;
         }
 
      }
 
   }
    return c;
}
 
 
int* merge_sort(int* array, int n){
    if (n==1) return array;
   int* a = getFirstHalf(array,n);
   int* b = getSecondHalf(array,n);
    merge_sort(a, n/2);
   merge_sort(b, n/2 );
   array=merge(a, b, n);
}
 
 
 
int main(){
   const n=3;
   int A[n]={4,2,1};
 
 
   printf("before: \n");
   for (char i=0; i<n; i++)
    cout<<A[i]<<"  ";
   merge_sort(A, n);
   printf("\nafter:\n");
   for (char i=0; i<n; i++)
    cout<<A[i]<<"  ";
  
    getch(); return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2012, 03:36
Ответы с готовыми решениями:

Подскажите, что мне надо поменять в моем коде, чтобы найти сумму по столбцам?
Вот моя программа, я тут нахожу сумму всех чисел, а мне надо найти сумму по столбцам, что мне изменить? #include &lt;stdio.h&gt; ...

Что не так в моем коде?
Код для расчета этой формулы. Делал по примеру. Запускаю, а вместо чисел inf. #include&lt;iostream&gt; ...

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая Сортировка&quot;: у быстрой...

3
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 04:23
Цитата Сообщение от ShookTrooper Посмотреть сообщение
for (char i=0; i<size;i++)
* a[i]=array[i]
i не char,а int,как вы вообще представляете себе работу этого цикла
Цитата Сообщение от ShookTrooper Посмотреть сообщение
int imax=sizeof(a)/4;
* int jmax=sizeof(b)/4
тут нужно было написать sizeof(имя_массива)/sizeof(T),где Т - тип переменной в массиве

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<vector>//MergeSort.h
using std::vector;
 
class MergeSort
{
public:
    MergeSort(int);
    void sort();
private:
    int size;
    vector<int> data;
    void sortSubVector(int,int);
    void merge(int,int,int,int);
};
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
73
74
75
76
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include<cstdlib>
using std::rand;
using std::srand;
 
#include<ctime>
using std::time;
 
#include<vector>
using std::vector;
 
#include "MergeSort.h"
 
MergeSort::MergeSort(int vectorSize)
{
    size = (vectorSize > 0 ? vectorSize : 10);
    srand(time(0));
 
    for(int i = 0;i < size;i++)
        data.push_back(10 + rand()%90);
}
 
void MergeSort::sort()
{
    sortSubVector(0,size-1);
}
 
void MergeSort::sortSubVector(int low,int high)
{
    if((high - low) >= 1)
    {
        int middle1 = (low + high)/2;
        int middle2 = middle1 + 1;
 
        sortSubVector(low,middle1);
        sortSubVector(middle2,high);
 
        merge(low,middle1,middle2,high);
    }
}
 
void MergeSort::merge(int left,int middle1,int middle2,int right)
{
    int leftIndex = left;
    int rightIndex = middle2;
    int combinedIndex = left;
    vector<int> combined(size);
 
 
    while(leftIndex <= middle1 && rightIndex <= right)
    {
        if(data[leftIndex] <= data[rightIndex])
            combined[combinedIndex++] = data[leftIndex++];
        else
            combined[combinedIndex++] = data[rightIndex++];
    }
 
    if(leftIndex == middle2)
    {
    while(rightIndex <= right)
        combined[combinedIndex++] = data[rightIndex++];
    }
    else
    {
        while(leftIndex <= middle1)
        combined[combinedIndex++] = data[leftIndex++];
    }
 
    for(int i = left;i <= right;i++)
        data[i] = combined[i];
 
    cout <<endl;
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
05.04.2012, 04:47
char это целочисленный тип, и цикл с использованием char как счетчик будет нормально работать, естественно если не нужно больше 255 итераций ( и то это если unsigned char, если signed то 127 ). Но зачем? Чем не устраивает int? В идеале вообще в качестве счетчиков и размерностей массивов желательно использовать тип size_t.
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 05:01
Цитата Сообщение от Toshkarik Посмотреть сообщение
char это целочисленный тип, и цикл с использованием char как счетчик будет нормально работать
точно,что-то я поспешил,спасибо,теперь уж точно не забуду
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2012, 05:01
Помогаю со студенческими работами здесь

Merge sort (Сортировка слиянием) - исправить ошибки в коде
Privet dami i gospoda. Ne poluchaetsa realisovat' Merge sort. Proga kompiliruetsa no sorting ne rabotaet. Help please. #include...

Посмотрите, пожайлуста, что не так в моем коде
Условие задачи (на проценты): перед началом половодья уровень воды в реке составлял Н м. В половодье каждый час уровень воды рос на Р% от...

Посмотрите, что можно оптимизировать в моем коде?
Сабж собственно. Проект для CodeBlocks.

Объясните начинающей программистке), что не так в моем коде
Написать программу, которая в цикле введет 5 значений и посчитает произведение чисел, которые делятся без остатка на 3 и не делятся на 5....

Подскажите, что обновить на моем ПК
Всем привет, ребят не особо разбираюсь в пк и железе, подскажите что необходимо заменить на моем пу. Игры не тянут


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru