Вернуться   Развлекательный портал CN.ru - Форум > Технологии > Программирование > Начинающим

Ответ
 
Опции темы
Старый 31.07.2012, 05:48 ↑ #1
Camuflado Мужской
Блуждающий товарищ
новый эго-житель
 
Регистрация: 07.12.2010
Адрес: Троллейный ж\м
Сообщений: 8
Репутация: 0
Camuflado молчание-золото
Отправить сообщение для Camuflado с помощью Skype™
По умолчанию c++ сортировка слиянием

Не могу сделать! Уже даже пробую, как в книжке, всё равно не получается.
Цитата:
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;

void merger (int* arr, int firstPosition, int secondPosition, int size)
{
int max=9;
vector<int> first,second;

for (int i=0;i<secondPosition-firstPosition;i++)
{first.push_back(arr[firstPosition+i]);};

for (int i=0;i<size-secondPosition;i++)
{second.push_back(arr[secondPosition+i]);};

first.push_back(max);
second.push_back(max);

int f=0,s=0;
for (int i=firstPosition;i<size;i++)
{
if (first[f]<=second[s])
{arr[i]=first[f];f++;}
else
{arr[i]=second[s];s++;};
};
};

void sortMerger (int *arr, int firstPosition, int size)
{
if (firstPosition<size)
{
int secondPosition=0;
secondPosition=(int)((firstPosition+size)/2);
sortMerger(arr,firstPosition,secondPosition);
sortMerger(arr,secondPosition+1,size);
merger(arr,firstPosition,secondPosition,size);
};
};

void main ()
{
int t[5]={5,4,3,2,1};
sortMerger(t,0,5);
printf("%d %d %d %d %d",t[0],t[1],t[2],t[3],t[4]);
getch();
}
ps форум табы потер

Последний раз редактировалось Camuflado; 31.07.2012 в 05:51. Причина: Попытка вернуть табы
Camuflado вне форума   Ответить с цитированием
Старый 31.07.2012, 08:02 ↑ #2
Murlakatam
старожил эго-форума
 
Аватар для Murlakatam
 
Регистрация: 04.01.2007
Сообщений: 502
Murlakatam отключил(а) отображение уровня репутации
По умолчанию Re: c++ сортировка слиянием

Что-то я попинал колёса, ой, то есть, попереименовывал переменные, и у меня неожиданно заработало:
PHP код:
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

void merger (intarrint firstPositionint interimPositionint lastPosition)
{
    
int max 9;
    
vector<intfirst,second;

    for (
int i firstPosition<= interimPositioni++)
    {
        
first.push_back(arr[i]);
    }

    for (
int i interimPosition+1<= lastPositioni++)
    {
        
second.push_back(arr[i]);
    }

    
first.push_back(max);
    
second.push_back(max);

    
int f 00;
    for (
int i firstPosition<= lastPositioni++)
    {
        if (
first[f]<=second[s])
        {
            
arr[i]=first[f];
            
f++;
        }
        else
        {
            
arr[i]=second[s];
            
s++;
        }
    }
}

void sortMerger (int *arrint firstPositionint lastPosition)
{
    if (
firstPosition lastPosition)
    {
        
int interimPosition = (firstPosition lastPosition) / 2;
        
sortMerger(arrfirstPositioninterimPosition);
        
sortMerger(arrinterimPosition+1lastPosition);
        
merger(arrfirstPositioninterimPositionlastPosition);
    }
}

#define N 7

int main ()
{

    
int t[N]={5,4,3,2,1,6,8};

    
puts("Before sorting:");
    for (
int i 0Ni++)
        
printf("%d ",t[i]);
    
puts("\n");

    
sortMerger(t,0,N-1);

    
puts("After sorting:");
    for (
int i 0Ni++)
        
printf("%d ",t[i]);
    
puts("\n");

    
getchar();
    return(
0);


Последний раз редактировалось Murlakatam; 31.07.2012 в 20:18.
Murlakatam вне форума   Ответить с цитированием
Старый 31.07.2012, 21:31 ↑ #3
Camuflado Мужской
Блуждающий товарищ
новый эго-житель
 
Регистрация: 07.12.2010
Адрес: Троллейный ж\м
Сообщений: 8
Репутация: 0
Camuflado молчание-золото
Отправить сообщение для Camuflado с помощью Skype™
По умолчанию Re: c++ сортировка слиянием

Спасибо, теперь буду играть в "Найди 10 отличий"
Camuflado вне форума   Ответить с цитированием
Ответ

Опции темы

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

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


Текущее время: 12:56. Часовой пояс GMT +6.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot

ВКонтактeTwitterFacebook
Хотите связаться с нами? Напишите письмо, и мы обязательно ответим.