Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用初始化维护终止技术证明算法正确?_C_Algorithm_Loop Invariant - Fatal编程技术网

C 如何使用初始化维护终止技术证明算法正确?

C 如何使用初始化维护终止技术证明算法正确?,c,algorithm,loop-invariant,C,Algorithm,Loop Invariant,在执行功能时必须满足哪些条件?(断言) 我想确保我的断言能够描述在运行第I个循环后我所知道的是真的 int linearsearch(int arr[], int n, int target) { for (int i = 0; i < n; i++) { if (arr[i] == target) return i; } return -1; } int-linearsearch(int-arr[],int-n,int-target){ 对于(i

在执行功能时必须满足哪些条件?(断言)

我想确保我的断言能够描述在运行第I个循环后我所知道的是真的

int linearsearch(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        if (arr[i] == target) return i;
    }
    return -1;
}
int-linearsearch(int-arr[],int-n,int-target){
对于(int i=0;i

这只是一个迭代线性搜索函数,如果找到目标,则返回目标的索引,否则返回-1。

线性搜索问题的循环不变量必须声明以前搜索过的所有数组元素,即它们都不等于
目标

∀ j
  • 显示不变量在进入循环之前保持不变
  • 表明如果不变量在迭代之前保持不变,那么它在迭代完成时也保持不变
  • 表明,如果循环在中间返回,则生成正确的结果
  • 表明如果循环正常结束,算法也会产生正确的结果

断言(arr!=NULL)在循环之前。很少需要:
assert(n您需要假设
arr
至少指向
n
int(我想包含在同一个对象中)。然后您自然会得到
arr!=NULL
并且
I认为您还必须假设
arr
至少指向
n
int。