作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图使用冒泡排序对用户输入数组进行排序,然后进行二分搜索以找到某个键。
然而,每个代码本身都可以正常工作,但是当我将它们组合起来时,二进制搜索不起作用:当我输入搜索键时,它会对数组进行排序并给出输出,但始终找不到该键。我试图添加一个 break
第一个 if
之后的语句在 while
但它也不起作用
#include <stdio.h>
int main(void) {
int arr[100];
int temp, size ,first, last, middle ,search,found,result;
printf("Enter the array size: ");
scanf("%d",&size);
printf("Enter the array elements: ");
for(int i = 0 ; i <size ;++i )
{
scanf("%d",&arr[i]);
}
printf("Enter search value: ");
scanf("%d", &search);
for(int i = 0 ; i<size ; ++i)
for(int j= 0; j<size-1; j++)
{
if(arr[j+1]>arr[j])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
printf("Elements of the array sorted in descending order: ");
for(int i = 0;i <size ;++i)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("Number of passes is: %d", size -1);
first = 0;
last = size- 1;
found = 0;
while (!found &&first <= last) {
middle = (first+last)/2;
if ( search == arr[middle] )
{
found = 1 ;
result = middle;
break;
}
else if(search < arr[middle])
{
last = middle - 1;
}
else
first = middle +1;
}
if (found)
{
printf("\n");
printf("%d found at location %d.\n", search, result);
}
else
{
printf("\n");
printf("%d is not found", search);
}
return 0;
}
最佳答案
将小于运算符 ( <
) 替换为大于运算符 ( >
),因为较大的元素位于中间的左侧。
else if(search < arr[middle]) //replace '<' to '>'
{
last = middle - 1;
}
关于c - C中数组的冒泡排序和二分查找的组合代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61896041/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!