Реферат: Сортировка массива методом Шелла
int stp[4]={9,5,3,1}; // Шаги сортировки
int fs,mn,p; // Первый, минимальный и текущий элементы
int n; // Счетчик
one_elem prm; // Временная переменная
// Цикл сортировки
for (n=0;n<4;n++) {
fs=0; // Начинать сортировать с начала
// Перебор всего массива
while (fs<num) {
// Поиск минимального элемента
p=fs;
mn=fs;
while (p<num) {
if (mas[p].n<mas[mn].n) mn=p;
p+=stp[n];
}
// Если минимальный элемент отличается от начального, поменять их местами
if (mn>fs) {
prm.n=mas[mn].n;
strcpy(prm.st,mas[mn].st);
mas[mn].n=mas[fs].n;
strcpy(mas[mn].st,mas[fs].st);
mas[fs].n=prm.n;
strcpy(mas[fs].st,prm.st);
}
fs+=stp[n]; // Переход к следующему элементу
}
}
}