软件技术基础上机实验报告
罗子建2016010902012
上机实验五
5.1
一、 程序流程说明——有条理的文字或流程图* 二、 程序代码
#include
int data[MAXNUM]; int length;
}list_type;
void createlist(list_type *lp) { }
int sort(list_type *list,intkey) {
int i;
for (i = 0; i
if (list->data[i] != key) { }
i++;
int i, elem; lp->length = 0;
printf(\); for (i = 0; i
scanf_s(\, &elem); if (elem == -1) break; lp->data[i] = elem; lp->length++;
}
}
else { }
printf(\成功查找\\n\); break;
return i+1;
int binsearch(list_type *list, intkey) { }
int main() {
int m; int i;
list_type list; createlist(&list);
printf(\请输入你想顺序查找的元素值:\); scanf_s(\, &m); i=sort(&list, m);
printf(\你所查找的元素位置为:%d\,i); printf(\请输入你想二分查找的元素值:\); scanf_s(\, &m); i = binsearch(&list, m);
printf(\你所查找的元素位置为:%d\, i); while (low <= high) { }
mid = (low + high) / 2; if (key
elseif (key>list->data[mid]) { } else { }
return mid; low = mid + 1; high = mid - 1;
int low = 0, mid, high = list->length - 1;
}
三、 测试数据
please input datas of the list 3 10 13 17 40 43 50 70 -1
请输入你想顺序查找的元素值:43 成功查找
你所查找的元素位置为:6请输入你想二分查找的元素值:5
你所查找的元素位置为:1请按任意键继续. . . 四、上机时遇到的问题(可分为编译问题和逻辑问题)
对于二分查找,我之前使用的mid 一直不能求解到最正确的位置,后来通过编译调试得到正确的答案。