<<
>>

4.2 Коды для сортировки Шелла

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

typedef int tblIndex; /* type of subscript */

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

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

tblIndex n, h, i, j;

T t;

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

* sort array a[lb..ub] *

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

/* compute largest increment */

n = ub - lb + 1;

h = 1;

if (n < 14)

h = 1;

else if (sizeof(tblIndex) == 2 && n > 29524)

h = 3280;

else {

while (h < n) h = 3*h + 1;

h /= 3;

h /= 3;

}

while (h > 0) {

/* sort-by-insertion in increments of h */

for (i = lb + h; i = lb && compGT(a[j], t); j -= h)

a[j+h] = a[j];

a[j+h] = t;

}

/* compute next increment */

h /= 3;

}

}

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

Еще по теме 4.2 Коды для сортировки Шелла:

  1. 2.2 Сортировка Шелла
  2. 4.1 Коды для сортировки вставками
  3. 4.5 Коды для хеш-таблиц
  4. 4.6 Коды для бинарных деревьев
  5. 4.8 Коды для разделенных списков
  6. 4.7 Коды для красно-черных деревьев
  7. 4.3 Коды для быстрого поиска (функции Quicksort)
  8. 4.4 Коды для стандартной реализации быстрого поиска
  9. 2.3 Быстрая сортировка
  10. 2.1 Сортировка вставками
  11. Коды Хэмминга
  12. 2.7. Каскадные коды
  13. 2.4. Блочные коды и их характеристики
  14. 1.4. Коды неопределенных значений
  15. 1.1.1. Методика свободной сортировки понятий
  16. 2. Сортировка
  17. 2.8.1. Турбоподобные коды
  18. Сортировка и структурирование данных
  19. 2.1.2. Методика свободной сортировки понятий как инструмент изучения семантического пространства образа мира подростка.