<<
>>

4.3 Коды для быстрого поиска (функции Quicksort)

typedef int T; /* type of item to be sorted */

typedef int tblIndex; /* type of subscript */

#define CompGT(a,b) (a > b)

tblIndex partition(T *a, tblIndex lb, tblIndex ub) {

T t, pivot;

tblIndex i, j, p;

/*******************************

* partition array a[lb..ub] *

*******************************/

/* select pivot and exchange with 1st element */

p = lb + ((ub - lb)>>1);

pivot = a[p];

a[p] = a[lb];

/* sort lb+1..ub based on pivot */

i = lb+1;

j = ub;

while (1) {

while (i < j && compGT(pivot, a[i])) i++;

while (j >= i && compGT(a[j], pivot)) j--;

if (i >= j) break;

t = a[i];

a[i] = a[j];

a[j] = t;

j--; i++;

}

/* pivot belongs in a[j] */

a[lb] = a[j];

a[j] = pivot;

return j;

}

void quickSort(T *a, tblIndex lb, tblIndex ub) {

tblIndex m;

/**************************

* sort array a[lb..ub] *

**************************/

while (lb < ub) {

/* quickly sort short lists */

if (ub - lb

<< | >>
Источник: Томас Ниман. Сортировка и поиск: Рецептурный справочник. 1995

Еще по теме 4.3 Коды для быстрого поиска (функции Quicksort):

  1. 4.4 Коды для стандартной реализации быстрого поиска
  2. Быстрый поиск сносок
  3. 4.1 Коды для сортировки вставками
  4. 4.2 Коды для сортировки Шелла
  5. 4.5 Коды для хеш-таблиц
  6. 4.6 Коды для бинарных деревьев
  7. 4.8 Коды для разделенных списков
  8. 4.7 Коды для красно-черных деревьев
  9. Теорема 34 Тело В при этих условиях не может двигаться быстрее, чем оно побуждается внешней силой, хотя бы окружающие его частицы двигались гораздо быстрее.
  10. 2. Для познания страстей души нужно различать ее функции от функций тела
  11. Политика региональной исключительности и поиск ресурсов конкурентоспособности для развития
  12. Поиски масштабов для характеристики социального процесса
  13. Коды Хэмминга
  14. Приложение 4 Алгоритм распознавания окружностей со случайным поиском для робототехнической системы
  15. 1.3.3. Использование методов анализа сигналов для решения задачи поиска «цели»