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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 23:32   #1
kzht91
Новичок
Джуниор
 
Регистрация: 16.04.2010
Сообщений: 1
По умолчанию quickSort, Быстрая сортировка массива

Помогите пожалуйста реализовать быструю сортировку, мучаюст уже неделю, вводим n, вводим массив. Отсортировать с помощью функции и двух рекурсий внутри нее.
Вот мой код:

#include "stdafx.h"
#include <iostream.h>

int a[1000];

void qsort(int l, int r);

void main() {
int i, n;
cin>>n;
for(i=0; i<n; i++) cin>>a[i];
qsort(0, n-1);
for(i=0; i<n; i++) cout<<a[i]<<" ";
cout<<endl;
}

void qsort(int l, int r) {
int i=l, j=r, m=(l+r)/2;
do {
while(a[i]<m && i<=r) i++;
while(a[j]>m && j>=l) j--;
if(i<=j) {
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
i++;
j--;
}
} while(i <= j);
if(j>l) qsort(l, j);
if(i<r) qsort(i, r);
}


Незнаю почему не работает, убираю вторую рекурсию пашет но неправильно, оставляю вообще ответ не выдает, хотя и ошибок нет.
kzht91 вне форума Ответить с цитированием
Старый 17.04.2010, 00:30   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
   #include <iostream.h>
   #include <stdio.h>
//--------------------------------------------------------------------
int array[1000];
//-----------ФУНКЦИЯ БЫСТОЙ СОРТИРОВКИ--------
void quicksort(long High, long Low) {
	long i, j;
	short p, temp;
	i=Low;
	j=High;
	p=array[(Low+High)/2];
	do
	{
		while (array[i]<p) i++;
		while (array[j]>p) j--;
		if (i<=j) {
		   temp=array[i];
		   array[i]=array[j];
		   array[j]=temp;
		   i++;
		   j--;
		}
	}
		while (i<=j);
		if (j>Low)    quicksort(j, Low);
		if (High>i)   quicksort(High, i);
}
//-------------------КОНЕЦ ФУНКЦИИ-------------------------
main() {
int i, j, temp, size=10;
	   printf("MaccuB u3 %d e/\\emeHToB: \n",size);
		for (i = 0; i < size; i++) {
			array[i]=random(99);
			cout<<array[i]<<";   ";
		}
//----------------СОРТИРОВКА--------------------
   quicksort(size-1, 0);
//-------------------КОНЕЦ--------------------------
cout<<"\n*****************************************\n";
	   for (i = 0; i < size; i++){
		 cout<<array[i]<<";   ";
	   }
cout<<"\n";
 system("pause");
 return 0;
}
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
Быстрая сортировка _Studentka_ Помощь студентам 9 20.11.2009 00:19
Быстрая сортировка lennon Общие вопросы C/C++ 0 08.10.2009 23:23
быстрая сортировка ГРИГОРИЙ-кореш Помощь студентам 1 16.04.2009 18:13