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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2016, 11:14   #1
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию Быстрая сортировка

Помогите пожалуйста улучшить быструю сортировку. Каким лучше выбрать опорный элемент?
Код:
#include <iostream>
#include "fstream"
#include <math.h>
using namespace std;
#define MAXSTACK 100000
void sort(int *ar, int L, int R) {
	int i, j, x, buf;
	x = ar[(R+L)/2];
	i = L;
	j = R;
	do
	{
		while (ar[i]<x)
			i++;
		while (ar[j]>x)
			j--;
		if (i <= j) {
			buf = ar[i];
			ar[i] = ar[j];
			ar[j] = buf;
			i++;
			j--;
		}
	} while (i <= j);

	if (j>L)
		sort(ar, L, j);
	if (i<R)
		sort(ar, i, R);
}

void sortQuick(int *ar, int cnt) {
	int L, R;
	L = 0;
	R = cnt - 1;
	sort(ar, L, R);
}
int main()
{
	ifstream f("input.txt");
	ofstream f1("output.txt");
	int n;
	f >> n;
	int* mas;
	mas = new int[n];
	for (int i = 0; i < n; i++)
	{
		f >> mas[i];
	}
	sortQuick(mas, n );
	for (int i = 0; i < n; i++)
	{
		f1 << mas[i] << " ";
	}

	return 0;
}
ShuricFC вне форума Ответить с цитированием
Старый 22.09.2016, 13:01   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Опорный элемент лучше выбирать случайным образом. Тогда вашу сортировку нельзя скомпроментировать (загнать в нее такие данные, чтобы она гарантированно работала со сложностью O(n^2)).
rrrFer вне форума Ответить с цитированием
Старый 22.09.2016, 13:31   #3
ShuricFC
Пользователь
 
Регистрация: 17.09.2016
Сообщений: 25
По умолчанию

Спасибо!
ShuricFC вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
Быстрая сортировка Neitrosha Помощь студентам 0 07.12.2010 19:40
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
Быстрая сортировка lennon Общие вопросы C/C++ 0 08.10.2009 23:23