Я пытаюсь понять сортировку оболочки, которую я нашел в Интернете. Это код:Попытка понять сортировку оболочки
for(increment = size/2;increment > 0; increment /= 2)
{
for(i = increment; i<size; i++)
{
temp = array[i];
for(j = i; j >= increment ;j-=increment)
{
//perform the insertion sort for this section
if(temp < array[j-increment])
{
array[j] = array[j-increment];
}
else
{
break;
}
}
array[j] = temp;
}
}
Я понимаю, что первый цикл держит деления количества элементов в массиве 2, пока не доберется до 1. Но я не очень понимаю, остальную часть кода.
положить его в отладчик, пройти через код и использовать часы, чтобы посмотреть значения различных переменных, чтобы увидеть, как это работает :-) –
И используйте очень маленький файл (5 строк?) С 1 дубликатом в качестве тестовых данных. – shellter