Предположим, у нас есть метод сортировки:
void DD_sort(int a[], int x, int y, int size_a)
{
if(x == y){
return;
}
else if(y == x+1){
if(a[x] > a[y]){
/* swap the content */
return;
}
}
else{
int s = floor((y+1-x)/3);
DD_sort(a, x, y-s, s);
DD_sort(a, x+s, y, s);
DD_sort(a, x, y-s, s);
}
}
Какими методами можно показать, что алгоритм сортировки правильно или неправильно сортирует массив a? Существуют ли системные подходы к этой проблеме? Я понимаю, что это работает в случае size_a == 1 и size_a == 2, но если size_a равно, скажем, 30, то мы рекурсивно вызываем метод сортировки на ~2/3 размера отброшенного массива. Похоже, что это работает, но я не уверен, как это официально показать.
size_a
? Какова цель этого параметра, когда он нигде в функции не используется? - person AnT   schedule 22.09.2014floor
здесь кажется шумом: целочисленное деление не даст никаких десятичных цифр. - person dyp   schedule 22.09.2014