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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2010, 15:58   #1
Smusmumriken
Пользователь
 
Аватар для Smusmumriken
 
Регистрация: 09.06.2010
Сообщений: 10
По умолчанию Не работает быстрая сортировка

Помогите пожалуйста с быстрой сортировкой.

Код:
#include <iostream>
#include <ctime>
using namespace std;

int a[5];
void Sort(int L, int R);

int main() {
	for (int i=0; i<5; i++) cin >> a[i];
	srand(time(0));
	Sort(0, 4);
	for (i=0; i<5; i++) cout << a[i];
	return 0;
}

void Sort(int L, int R) {
	int i=L;
	int j=R;
	int buf;
	int x=a[rand()%(R-L)+L];
	do {
		while (a[i]<x)
			i++;
		while (a[j]>x)
			j--;
		if (i<=j) {
			buf=a[i];
			a[i]=a[j];
			a[j]=buf;
			i++;
			j--;
		}
	} while ( i>j);
	if (i<R)
		Sort(i,R);
	if (j>L)
		Sort(L,j);
}
что не так?
С уважением, Smusmumriken.
Smusmumriken вне форума Ответить с цитированием
Старый 12.06.2010, 16:21   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
void quickSort(int left, int right) {
      int i = left, j = right;
      int tmp;
      int pivot = a[(left + right) / 2];
      while (i <= j) {
            while (a[i] < pivot)
                  i++;
            while (a[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = a[i];
                  a[i] = arr[j];
                  a[j] = tmp;
                  i++;
                  j--;
            }
      };
      if (left < j)
            quickSort(left, j);
      if (i < right)
            quickSort(i, right);
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 12.06.2010, 18:50   #3
Smusmumriken
Пользователь
 
Аватар для Smusmumriken
 
Регистрация: 09.06.2010
Сообщений: 10
По умолчанию

это-то оно так, а почему не работает со случайным выбором элемента?
С уважением, Smusmumriken.
Smusmumriken вне форума Ответить с цитированием
Старый 12.06.2010, 19:22   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
#include <iostream>
#include <ctime>
using namespace std;

int a[5];
void quickSort(int L, int R);

int main() {
	for (int i=0; i<5; i++) cin >> a[i];
	srand(time(0));
	quickSort(0, 4);
	for (int i=0; i<5; i++) cout << a[i];
	cin.get();
	return 0;
}

void quickSort(int left, int right) {
      int i = left, j = right;
      int tmp;
      int pivot = a[rand() % (right - left) + left];
      while (i <= j) {
            while (a[i] < pivot)
                  i++;
            while (a[j] > pivot)
                  j--;
            if (i <= j) {
                  tmp = a[i];
                  a[i] = a[j];
                  a[j] = tmp;
                  i++;
                  j--;
            }
      };
      if (left < j)
            quickSort(left, j);
      if (i < right)
            quickSort(i, right);
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 12.06.2010, 19:26   #5
Smusmumriken
Пользователь
 
Аватар для Smusmumriken
 
Регистрация: 09.06.2010
Сообщений: 10
По умолчанию

ошибку понял, спасибо!
С уважением, Smusmumriken.
Smusmumriken вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка Serious Общие вопросы Delphi 2 02.11.2010 13:38
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
Быстрая сортировка _Studentka_ Помощь студентам 9 20.11.2009 00:19
Быстрая сортировка Syltan Общие вопросы C/C++ 7 18.09.2009 17:35
быстрая сортировка ГРИГОРИЙ-кореш Помощь студентам 1 16.04.2009 18:13