【发布时间】:2017-03-26 06:30:01
【问题描述】:
我正在为我的 C 类做一个项目。我们将在具有 10 个不同数字的升序数组中查找值,然后搜索用户想要的值并返回搜索数字的索引。第一种方法称为线性搜索,它将数组中的每个元素与用户想要的值进行比较。第二种方法称为二进制,您将中间索引与搜索值进行比较。如果 List[middle] = 目标元素,则返回变量 middle,它是元素的索引。如果目标元素大于 List[Middle],则继续数组右半部分的处理。如果它较小,则在数组的左半部分继续相同的过程。减半过程仅在“左”索引变量小于或等于“右”索引变量之前完成。如果没有找到目标元素,则返回-1。
#include<stdio.h>
int main()
{
int array[10];
int i = 0,value;
printf("Please enter 10 distinctive postive numbers with ascending order.");
for(i;i<10;i++)
{
scanf("%d",&array[i]);
}
printf("What value are you seaching for?");
scanf("%d",value);
printf("searchLinear(value,*array[10],10)");
return 0;
}
int searchLinear(int s,int *list[10],int n){
list[n];
int i = 0;
for(i;i<n;i++)
{
if(s == *list[i])
return *list[i];
}
if(i = n)
return -1;
}
int searchBinary(int s, int *list[10],int n) {
list[n];
int i,left,right,middle;
left = 0;
right = n-1;
for(i = 0;i<n/2;i++)
{
middle = (left + right)/2;
if(*list[middle] > s)
right = middle;
else if(*list[middle] < s)
left = middle;
else if(*list[middle] = s)
return *list[middle];
if(left == right)
return -1;
}
}
这是我的代码,看起来它陷入了无限循环。我该如何解决?
【问题讨论】:
-
if(i = n)-->>if(i == n) -
真的!谢谢!我仍在尝试弄清楚如何运行它。
-
打开警告,通常意味着使用
-Wall标志编译,并修复所有警告。他们会解释为什么你的代码不工作(或者至少是第一组基本问题)。 -
还有一个:
else if(*list[middle] = s)-->>else if(*list[middle] == s)(可能有害)顺便说一句:int searchBinary()函数有时会返回一个随机值。 -
-wall flag 是什么意思?
标签: c arrays function pointers