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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 20:07   #1
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию Сортировка слиянием C++

Помогите пожалуйста написать алгоритм сортировки.
Алгоритм сортировки такой:
Делим массив на секции, убывающие и возрастающие. т.к. массив, чаще всего состоит из небольших остортированных подмассивов. возрастающих и убывающих. например, массив 12394187 состоит из возрастающего подмассива 1239, убывающего 41, убывающего 87.
нужно разделить массив на подмассивы. Убывающие массивы, мы просто переворачиваем. и получается множество отсортированных подмассивов, которые мы сливаем обычным двоичным слиянием. Скорее всего, нужно брать первы два подмассива - сливать. затем слитый подмассив со следующим подмассивом и так далее. вот что сделала и страшно запуталсь(((
:

#include <iostream>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include <string>
#include <vector>
using namespace std;

int main()
{
setlocale (LC_ALL, "Russian");
const int N = 20;
int a[N]={17, 28, 4, 91, 15, 16, 32, 67, 13, 22, 14, 7, 1, 23, 25, 89, 67, 20, 11, 6};//7 кусочков
cout<<"Выводим элементы массива"<<endl;
for(int i2=0; i2<N; i2++)
{
cout<<a[i2]<<" ";
}
cout<<endl;
vector<int> vu;
vector<int> vv;
vector<int> vobrat;
vector<int> vsort;
int i=1;
while(i<N)
{
while(a[i-1]<a[i])
{
cout<<"Выводим возрастающий массив"<<endl;
vv.push_back(a[i-1]);
vv.push_back(a[i]);
for(int b=0; b<vv.size(); b++)
{
cout<<vv[b]<<" ";
}
cout<<endl;
i++;
}
while(a[i-1]>a[i])
{
cout<<"Выводим убывающий массив"<<endl;
vu.push_back(a[i]);
//vu.push_back(a[i+1]);
for(int b=0; b<vu.size(); b++)
{
cout<<vu[b]<<" ";
}
cout<<endl;

for(int k=vu.size()-1; k>0; k--)
{
cout<<"Переворачиваем массив"<<endl;
vobrat.push_back(vu[k]);
for(int b=0; b<vu.size(); b++)
{
cout<<vu[b]<<" ";
}
cout<<endl;
}
i++;
}

}
system("pause");
return 0;
}
PinkPink вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка слиянием (C++) DarkAltair Помощь студентам 7 11.10.2011 21:12
СОРТИРОВКА СЛИЯНИЕМ spawn969 Помощь студентам 5 12.05.2011 01:03
Сортировка слиянием Aндрей Общие вопросы C/C++ 3 15.04.2010 09:47
Сортировка слиянием maxflint Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 05.12.2009 20:41