Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Сортировка слиянием как найти ошибку
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Khelleos Khelleos вне форума
Member
 
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2010
По умолчанию Сортировка слиянием как найти ошибку - 16.05.2011, 21:17

Помогите найти ошибку

cpp Код:
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void merge(int arr[],int first,int mid,int last);
 
const int MAX_SIZE = 10;// количество элементов временного массива;
 
void Merge(int arr[],int first,int mid,int last)
{
    int temp_arr[MAX_SIZE];//определил временный массив,далее разделили
    int first1 = first;//first1-первый елемент одной части
    int last1 = mid; //last1-последний элемент одной части(середина массива)
    int first2 = mid + 1;//first2-первый элемент второй части
    int last2 = last;//las2 -последний элемент второй части
 
    int index = first1;//указатель с помощью которого пробегаю по всему массиву
 
    for (; (first1 <= last1) &&(first2 <= last2) ; ++index)//рассматриваем каждую часть отдельно,перебираем элементы каждой части
    {
        if (arr[first1] < arr[first2])//если первая часть меньше второй
        {
            temp_arr[index] = arr[first1];//то записыаем ее в временный массив
            ++first1;//и увеличиваем элементы first1
        }
        else//иначе
        {
            temp_arr[index]=arr[first2];//если вторая часть меньше первой то записываем ее в временный массив
            ++first2;//ставим его на первое место
        };
        for (; first1 <= last1;++first1,++index)//перебираем элементы первой части и записыаем его в новый массив,сортируем первую часть
            temp_arr[index] = arr[first1];
 
        for (; first2 <= last2; ++first2, ++index)//перебираем элементы второй части и записываем в новый массив,сортируем вторую часть
            temp_arr[index] = arr[first2];
 
        for (index = first; index <= last; ++index)//сортируем две отсортированные части
            arr[index] = temp_arr[index];
    };
}
 
void MergeSort(int arr[], int first, int last)
{
    if (first < last)//если первая часть меньше второй,то
    {
        int mid = (first + last)/2;// середина массива равна
        MergeSort(arr, first, mid);
        MergeSort(arr, mid+1, last);
        Merge(arr, first, mid,mid+1);
    }
}
 
int main()
{
         
    int arr[100], n = 10;
    int i;
    cout<<"Vvedite massiv :"<<endl;
   
    for(i = 0; i < n; i++)
        cin >> arr[i];
    cout << endl;

    MergeSort(arr, i = 1, n);
   
    cout << "Otsortirovanniy massiv : " << endl;
    for (int i = 0;  i< n; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
   
    _getch();
    return 0;
};
Ответить с цитированием
  (#2 (permalink)) Старый
Khelleos Khelleos вне форума
Member
 
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2010
По умолчанию 16.05.2011, 22:00

Ну или предложите свой вариант
Ответить с цитированием
  (#3 (permalink)) Старый
Vadimir Vadimir вне форума
if(rand(1,1) == rand(1,1)
 
Аватар для Vadimir
 
Сообщений: 73
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.12.2010
По умолчанию 17.05.2011, 00:14

Примеры реализации сортировки слиянием — Викиучебник

cpp Код:
for (; first1 <= last1;++first1,++index)
такие условия - плохой стиль. Зачем тогда вообще вам использовать цикл for?

cpp Код:
};
первый раз в C/C++ вижу точку с запятой после фигурной скобки
Ответить с цитированием
  (#4 (permalink)) Старый
SergeMukhin SergeMukhin вне форума
Member
 
Сообщений: 260
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 22.06.2006
По умолчанию 17.05.2011, 15:29

Цитата:
Сообщение от Vadimir Посмотреть сообщение
первый раз в C/C++ вижу точку с запятой после фигурной скобки
struct a{};
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива слиянием Булочка С/С++ 3 10.12.2014 19:08
Быстрая сортировка(сортировка Хоара).Сортировка фрагмента массива[C++] druger С/С++ 1 20.04.2012 16:45
Сортировка слиянием - количество операций сравнения Rizza Вопросы начинающих программистов 0 30.06.2011 14:22
Необходимо найти ошибку найти ошибку rusak723 Pascal 5 09.06.2011 10:58
Как найти ошибку Leks100 Вопросы начинающих программистов 0 07.06.2011 05:19
Как найти ошибку Leks100 C++ Builder 3 05.06.2011 17:43
Не могу найти ошибку. Помогите найти и исправить... 111 Pascal 0 12.01.2011 16:30
Prolog 5.2. Пузырьковая сортировка. Объясните ошибку в синтаксисе T0mmY Prolog 2 24.09.2010 11:19
Ado.Net как найти ошибку SidorovaNata SQL 1 18.02.2009 20:30
Как найти ошибку sashar2 С/С++ 22 03.03.2006 13:13
Сортировка слиянием, обычная и естественная Timdevil Алгоритмы 0 17.11.2005 20:44
Сортировка слиянием Partisan Prolog 1 02.06.2005 14:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов