【发布时间】:2021-08-19 22:44:44
【问题描述】:
我们需要做两个函数,1] 冒泡排序和 2] 二分查找。如果元素不属于数组,则 2]nd 函数应返回 -1。在主函数中,我们获取输入,如果元素不在数组中,我们应该打印“未找到元素”。我已经根据问题中提出的具体情况编写了程序。
第一个函数,冒泡排序工作正常,但第二个函数只给出“找不到元素”作为输出,无论值是什么。请提出解决方案。
void bubbleSortDec(int arr[10])
{
int i=0,j=0,temp=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(arr[j]<arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int binarySearch(int arr[10], int x)
{
bubbleSortDec(arr);
int first, last=0, middle=0;
first = 0;
last = 10 - 1;
middle = (first+last)/2;
while (first <= last) {
if (arr[middle] < x)
first = middle + 1;
else if (arr[middle] == x) {
printf("%d found at location %d.\n", x, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if (first > last)
{
return -1;
}
}
int main()
{
int arr[10];
int i, x,k=0;
printf("Enter 10 numbers \n");
for(i=0; i<10;i++)
{
scanf("%d", &arr[i]);
}
printf("Enter a number to be searched \n");
scanf("%d", &x);
k=binarySearch(arr,x);
if(k==-1)
printf("Element not found \n");
}
【问题讨论】:
-
您按降序对数组进行排序,但搜索期望它按升序。
-
二分查找需要排序的输入,但是每次在数组中查找元素时调用冒泡排序似乎有点过于谨慎。如果搜索成功,您可能希望返回一个索引左右。
标签: arrays c function error-handling binary-search