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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 19:35   #1
doctorvra4
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 23
Восклицание Товарищи нужен совет си

пишу уже не первый раз ну да ладно....
народ очень нужна помощь в быстрой сортировке,завтра лабу сдавать. Проблема не в алгоритме или принцепе работы а в написание кода,всего кода а не функции!объясните пожалуста нубу что с кодом не так.Или просто исправьте,или намекните

Код:
#include<stdio.h>
#include<stdlib.h>

void quicksort (int *a,int l,int r);
int main()
{
int x,N,i,l,r,j,w,*a;
scanf("%d",&N);
a=(int*)malloc(sizeof(int)*N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
l=0;
r=N;
quicksort (a,l,r);
for(i=0;i<N;i++);
printf("%d",a[i]);
return 0;
}

void quicksort(int *a, int l, int r) {
int x, w; int i=l;
int j=r;
x = a[(i+j)/2];
do {
while (a[i] < x) i++;
while (x < a[j]) j--;
if(i <= j) {
w = a[i];
a[i] = a[j] ;
a[j] = w;
i++; 
j--;


}
} while (i<j);


if (l<j) quicksort (a,l,j); 
if (i<r) quicksort (a,i,r); 

}

Последний раз редактировалось doctorvra4; 07.12.2011 в 19:40.
doctorvra4 вне форума Ответить с цитированием
Старый 07.12.2011, 21:49   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от doctorvra4 Посмотреть сообщение
пишу уже не первый раз ну да ладно....
народ очень нужна помощь в быстрой сортировке,завтра лабу сдавать. Проблема не в алгоритме или принцепе работы а в написание кода,всего кода а не функции!объясните пожалуста нубу что с кодом не так.Или просто исправьте,или намекните

Код:
#include<stdio.h>
#include<stdlib.h>

void quicksort (int *a,int l,int r);
int main()
{
int x,N,i,l,r,j,w,*a;
scanf("%d",&N);
a=(int*)malloc(sizeof(int)*N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
l=0;
r=N;
quicksort (a,l,r);
for(i=0;i<N;i++);
printf("%d",a[i]);
return 0;
}

void quicksort(int *a, int l, int r) 
{
   int x, w; int i=l;
   int j=r;
   x = a[(i+j)/2];
}
Ваша ошибка помечена красным в процедуре сортировки! Нужно вот так - int j=r-1.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 08.12.2011, 05:43   #3
doctorvra4
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 23
По умолчанию

Огромное спасибо все работает

Последний раз редактировалось doctorvra4; 08.12.2011 в 09:02.
doctorvra4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен совет Kolya1337 Свободное общение 4 04.04.2011 23:52
Нужен совет stenl1 Компьютерное железо 8 29.01.2011 21:35
Нужен совет, просто совет kardinal94 Общие вопросы Delphi 7 16.12.2010 22:16
Товарищи, хочу совет и свежих мыслей! axenovmisha Свободное общение 10 29.03.2010 09:41
Нужен совет prikolist Общие вопросы C/C++ 1 05.07.2009 15:40