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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2015, 23:25   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Быстрая сортировка по убыванию

Здравствуйте. Может есть у кого-то код на с++. По возрастанию нашла,а по убыванию нет((
Вероника99 вне форума Ответить с цитированием
Старый 06.11.2015, 23:36   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
..По возрастанию нашла,а по убыванию нет((
Шутить изволите...
В том, что нашли, поменяйте > на < и наоборот.
type_Oleg вне форума Ответить с цитированием
Старый 06.11.2015, 23:40   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Где именно? Я меняла,но оно зависало и все

Код:
void quicksort(int *mas, int first, int last)
{
int mid, count;
	int f=first, l=last;
	mid=mas[(f+l) / 2]; //вычисление опорного элемента
	do
	{
		while (mas[f]<mid) 
			f++;
		while (mas[l]>mid)
			l--;
	if (f<=l) //перестановка элементов
	{
		count=mas[f];
		mas[f]=mas[l];
		mas[l]=count;
		f++;
		l--;
	}
	} while (f<l);
	if (first<l) 
		quicksort(mas, first, l);
	if (f<last) 
		quicksort(mas, f, last);}
Вероника99 вне форума Ответить с цитированием
Старый 06.11.2015, 23:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Здравствуйте. Может есть у кого-то код на с++. По возрастанию нашла,а по убыванию нет((
так переделай тот, что у тебя есть!

смотри, в общем виде QuickSort выглядит так (вырвал кусок из алгоритма):
Код:
....
 p = a[ N>>1 ];		// центральный элемент

  // процедура разделения
  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;

    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
......
если поменяешь знаки сравнения в блоках while
будет сортировать по убыванию:
Код:
    while ( a[i] > p ) i++;
    while ( a[j] < p ) j--;

в твоём примере:
Код:
		while (mas[f]>mid) 
			f++;
		while (mas[l]<mid)
			l--;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2015, 23:49   #5
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Спасибо большое,помогло,я также делала и не получалось,только сейчас увидела,что при вызове функции передаю сначала длину массива,а потом начало, исправила и заработало
Вероника99 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16