Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 15:41   #1
dimulka2010
 
Регистрация: 28.03.2010
Сообщений: 4
По умолчанию отсортировать массив слиянием

помогите,пожалуйста !!!срочно!!!написал,как мог,но почему то сортировка не работает,а сдать надо уже скоро,плиз))
Код:
#include "stdafx.h"
#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;

};

Последний раз редактировалось dimulka2010; 28.03.2010 в 17:13.
dimulka2010 вне форума Ответить с цитированием
Старый 28.03.2010, 16:26   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

да что ж у вас за привычка вставлять код без тега CODE...
NiCola999 вне форума Ответить с цитированием
Старый 28.03.2010, 17:12   #3
dimulka2010
 
Регистрация: 28.03.2010
Сообщений: 4
Радость

извеняюсь-первый раз на таком форуме
dimulka2010 вне форума Ответить с цитированием
Старый 28.03.2010, 17:16   #4
dimulka2010
 
Регистрация: 28.03.2010
Сообщений: 4
Радость

Увожаемый NiCola999,как вы?можете мне помочь?
dimulka2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двумерный массив, отсортировать его по строкам С++ kontroller Помощь студентам 7 18.02.2010 23:17
Как отсортировать массив Double с максимум в середине списка? SkAndrew Общие вопросы Delphi 4 12.02.2010 19:48
Отсортировать массив по убыванию в С++ sershok Помощь студентам 5 16.02.2009 00:31
Помогите отсортировать массив методом бинарных вставок zhorzh2407 Помощь студентам 1 19.11.2008 17:19