我试图证明选择排序的正确性,其中我应该只使用数学谓词逻辑来证明程序的正确性,我发现很难将下面给出的英语语句写成谓词并继续证明正确性遵循推理规则,
void sort(int [] a, int n) {
for (int i=0; i<n-1; i++) {
int best = i;
for (int j=i; j<n; j++) {
if (a[j] < a[best]) {
best = j;
}
}
swap a[i] and a[best];
}
}
我必须在谓词中写的语句是,
a[0...i-1]
已排序中的所有条目
a[i..n-1]
都大于或等于 中的条目a[0..i-1]
。