0
假设我们有一个排序方法:证明正确的,并征服排序
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);
}
}
我们可以用什么方法来证明排序算法正确或不正确排序数组?有没有系统的方法解决这个问题?我知道它适用于size_a == 1和size_a == 2的情况,但如果size_a是,比如说30,那么我们递归调用大小为数组的2/3大小的排序方法。它看起来好像是有效的,但我不确定如何正式表明这一点。
给x和y的初始值是多少? – 2014-09-22 00:54:58
@EmanuelePaolini他们是x = 0和y = size_a-1 – 2014-09-22 00:55:50
什么是'size_a'?当它在函数的任何地方没有被真正使用时,它作为参数的目的是什么? – AnT 2014-09-22 00:56:16