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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2012, 21:46   #1
syxov
Новичок
Джуниор
 
Регистрация: 26.09.2012
Сообщений: 1
Стрелка [C++] Сортировка слиянием

Пытаюсь сваять сортировку слиянием на С++, но не выходит. Скажите, пожалуйста, почему:
Код:
#include <iostream.h>
#include <time.h>
void swap(int &one, int &two){
        int buf=one;
        one=two;
        two=buf;
}

void Sliv(int *a,const int start,const int middle,const int end){
        if(end-start==1){
                if(a[start]>a[end]) swap(a[start],a[end]);
                return;
        }
        int start_first_mass=0, start_second_mass=middle+1-start, l=start;
        int *temp = new int [end-start+1];
        if(!temp) exit(1);
        for(int i=0;i<=end-start;i++){
                temp[i]=a[i+start];
        }
        while(start_first_mass<=middle-start || start_second_mass<=end-start){
                if(temp[start_first_mass]<=temp[start_second_mass]){
                        a[l]=temp[start_first_mass];
                        l++;
                        start_first_mass++;        
                }
                else{
                        a[l]=temp[start_second_mass];
                        l++;
                        start_second_mass++;
                }
        }
        while (start_first_mass<=middle-start) {a[l]=temp[start_first_mass];l++;start_first_mass++;}
        while (start_second_mass<=end-start) {a[l]=temp[start_second_mass];l++;start_second_mass++;}
        delete []temp;
}

void SortMerge(int *a,const int start,const int end){
        if(start>=end) return;
        int middle=(end+start)/2;
        SortMerge(a,start,middle);
        SortMerge(a,middle+1,end);
        Sliv(a,start,middle,end);
}

void main(){
        srand(time(NULL));
        int n;
        int *a;
        cin>>n;
        a = new int[n];
        if(!a)exit(1);
        for(int i=0;i<n;i++){
                a[i]=rand()%400;
                cout<<a[i]<<' ';
        }
        cout<<endl;
        SortMerge(a,0,n-1);
        for(int i=0;i<n;i++){
                cout<<a[i]<<' ';
        }
        cout<<endl;
        system("pause");
        delete []a;
}
syxov вне форума Ответить с цитированием
Ответ


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



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