|
想在一个排序的数组中用二进制搜索找到相应的数字。程序用二进制搜索是否在剩余的List中存在第一个数字。最简单的用例已经给出:
testcase1:existing element
action:Run./binsearch 1 1 3 5 7 9 15 17
expected result:找到数字
以下是gcov的输出结果,请添加测试用例使得全面覆盖
#include<stdio.h>
#include<stdlib.h>
int isElement(int value,int sortedArr[],int arrayLen){
if(arrayLen==0){
return 0;
}
else if(arrayLen==1){
return value==sortedArr[0];
}
else{
int midIndex=arrayLen/2;
int middleElement=sortedArr[midIndex];
if(middleElement==value){
return 1;
}
else if(value<middleElement){
return isElement(value,sortedArr,midIndex);
}
else{
return isElement(value,sortedArr+midIndex,arrayLen-midIndex);
}}}
int main(int argc,char**argv){
int value,*sortedArr,arrayLen,i;
if(argc<2){
printf("Syntex error,ues:elm e e1 e2 e3...\n");
exit(EXIT_FAILURE);
}
value=atoi(argv[1]);
arrayLen=argc-2;
sortedArr=malloc(sizeof(int)*arrayLen);
for(i=0;i<arrayLen;i++){
sortedArr=atoi(argv[i+2]);
if(i>0&&sortedArr<sortedArr[i-1]){
printf("Error:the list of values must be sorted\n");
exit(EXIT_FAILURE);
}}
if(isElement(value,sortedArr,arrayLen))
printf("The value was found\n");
else
printf("The value was not found\n");
return EXIT_SUCCESS;
}
|
|