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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2015, 12:42   #1
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию Где ошибка (Си)Mergesort

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Merge (int *A,int first,int last)
{
    int mid,start,end,i;
    int *C;
    C =(int*)malloc (sizeof(int)*last);
    mid = (first+last)/2;
    start = first;
    end = mid+1;
    for(i = first;i<=last;i++){
        if ((start<=mid)&& ((end>last)||(A[start]<A[end])))
    {
        C[i]=A[start];
        start++;
    }
    else
    {
        C[i]=A[end];
        end++;
    }
    }
    for(i=first;i<=last;i++)A[i]=C[i];
    free (C);
}
void Mergesort(int *A,int first,int last)
{

   if (first<last)
   {
     int  mid = (first+last)*0.5;
       Mergesort(A,first,mid);
       Mergesort(A,mid+1,last);
       Merge(A,first,last);
   }
}

int main()
{
int i,n;
int *A;
printf("input how many element of array ");
scanf("%i",&n);
A=(int*)malloc(sizeof(int)*n);
srand(time(NULL));
                for(i=0;i<n;i++){
                A[i]=rand()%n;
                printf("%d ",A[i]);
                }srand (1);
                printf("\sort array");
                Mergesort(A,0,n);
                for(i=1;i<n;i++)
                printf("%d ",A[i]);
}
Можно закрывать разобрался

Последний раз редактировалось Sterben; 12.05.2015 в 16:38.
Sterben вне форума Ответить с цитированием
Старый 12.05.2015, 16:42   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

И в чем была ошибка... Поделитесь.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 12.05.2015, 23:30   #3
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

Bugrimov,
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Merge (int *A,int first,int last)
{
    int mid,start,end,i;
    int *C;
    C =(int*) calloc (last+1,sizeof(int));
    mid = (first+last)/2;
    start = first;
    end = mid+1;
    for(i = first;i<=last;i++){
        if ((start<=mid)&& ((end>last)||(A[start]<A[end])))
    {
        C[i]=A[start];
        start++;
    }
    else
    {
        C[i]=A[end];
        end++;
    }
    }
    for(i=first;i<=last;i++)A[i]=C[i];
    free (C);
}
void Mergesort(int *A,int first,int last)
{

   if (first<last)
   {
     int  mid = (first+last)*0.5;
       Mergesort(A,first,mid);
       Mergesort(A,mid+1,last);
       Merge(A,first,last);
   }
}

int main()
{
int i,n;
int *A;
printf("input how many element of array ");
scanf("%i",&n);
A=(int*)calloc(n,sizeof(int));
srand(time(NULL));
                for(i=0;i<n;i++){
                A[i]=rand()%n;
                printf("%d ",A[i]);
                }srand (1);
                printf("\n\nsort array: ");
                Mergesort(A,0,n);
                for(i=0;i<n;i++)
                printf("%d ",A[i]);
}
Sterben вне форума Ответить с цитированием
Старый 12.05.2015, 23:33   #4
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

ошибка была в том что больше 4 элементов оно не сортировало
Sterben вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
спасите, добрые люди, пожаааааалуйста:3 где-то в коде закралась ошибка, потому что выводит левые числа, а где, понятия не имею:с typayababa Помощь студентам 9 19.11.2017 11:48
Где ошибка? При билдинге ошибок 0, но при запуске вылетает ошибка. Visual C nikitabool Помощь студентам 0 08.01.2014 17:19
Где ошибка???Турбо Паскаль Ошибка 57 PASKAL12 Помощь студентам 6 14.10.2013 22:31
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
написал программу, где то ошибка, не пойму где... Kelevra91 Общие вопросы C/C++ 5 17.01.2011 16:38