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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 17:20   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Сортировка

Нужно сортировать данные комбинированием методов быстрой сортировки и методом вставки.
Отдельно понятно, а как их скомбинировать?) Пример можно на любом одномерном массиве
Praud вне форума Ответить с цитированием
Старый 12.10.2014, 23:08   #2
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

не? никто не знает что это и с чем естся?)
Praud вне форума Ответить с цитированием
Старый 12.10.2014, 23:10   #3
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Вот дословно задание
Сортировка таблицы комбинированием методов “быстрой сортировки” и
вставки.
Praud вне форума Ответить с цитированием
Старый 12.10.2014, 23:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я точно не знаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 07:05   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Все просто..
Для простоты берем одномерный массив.. И начинаем применять к нему итерации QSort'a.. Как только кол-во элементов в некоторой группе, которую мы сейчас собираемся сортировать, не превышает 10, мы сразу сортируем эту группу не QSort'ом, а сортировкой вставками
Poma][a вне форума Ответить с цитированием
Старый 13.10.2014, 07:12   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Пример быстрой сортировки: http://algolist.manual.ru/sort/quick_sort.php
Пример сортировки вставками: http://algolist.manual.ru/sort/insert_sort.php

Цитата:
Цитата:
http://algolist.manual.ru/sort/quick_sort.php

1.Из-за рекурсии и других "накладных расходов" Quicksort может оказаться не столь уж быстрой для коротких массивов. Поэтому, если в массиве меньше CUTOFF элементов (константа зависит от реализации, обычно равна от 3 до 40), вызывается сортировка вставками. Увеличение скорости может составлять до 15%

Для проведения метода в жизнь можно модифицировать функцию quickSortR, заменив последние 2 строки на
if ( j > CUTOFF ) quickSortR(a, j);
if ( N > i + CUTOFF ) quickSortR(a+i, N-i);


Таким образом, массивы из CUTOFF элементов и меньше досортировываться не будут, и в конце работы quickSortR() массив разделится на последовательные части из <=CUTOFF элементов, отсортированные друг относительно друга. Близкие элементы имеют близкие позиции, поэтому, аналогично сортировке Шелла, вызывается insertSort(), которая доводит процесс до конца.
template<class T>
void qsortR(T *a, long size) {
quickSortR(a, size-1);
insertSort(a, size); // insertSortGuarded быстрее, но нужна функция setmax()
}
.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 13.10.2014, 14:03   #7
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Спасибо! Будут вопросы - напишу.
Praud вне форума Ответить с цитированием
Старый 14.10.2014, 02:10   #8
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Разобрался, описал для массива целых чисел.
Теперь левел ап задачи.

Предположим есть некий столбец в таблице, который необходимо сортировать по алфовиту данными методами. Есть идеи?
Praud вне форума Ответить с цитированием
Старый 14.10.2014, 06:58   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Есть идеи?
А есть проблемы?
Poma][a вне форума Ответить с цитированием
Старый 14.10.2014, 14:20   #10
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Небольшие...
Выскакивает StackOverflow Exception
Код:
 public void QSort(int first, int last)
       {
           const int Z = 10;
           string count;
           int f = first, l = last;
           int mid = a[0,(f + l) / 2][0].GetHashCode();
           do
           {
               while (a[0,f][0].GetHashCode() < mid) f++;
               while (a[0,l][0].GetHashCode() > mid) l--;
               if (f <= l) //перестановка элементов
               {
                   count = a[0,f];
                   a[0,f] = a[0,l];
                   a[0,l] = count;
                   f++;
                   l--;
               }
           } while (f < l);

           if (l > Z) QSort(first, l);
           if (last > Z) QSort(f, last);
       }
На входе a[,] типа string.
Вызываю db.QSort(0, 15-1);
В таблице 15 строк. Пытаюсь сортировать первый столбец.

Последний раз редактировалось Praud; 14.10.2014 в 14:24.
Praud вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32