stupid bird learns 二分查找

这篇博客介绍了两种C语言实现的查找算法:最普通查找和二分查找。在最普通查找中,遍历数组直到找到目标元素或结束。而在二分查找中,先对数组进行排序,然后通过不断缩小搜索范围来提高查找效率。博主还提供了代码示例,并展示了如何根据用户输入的数字进行查找操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大佬们,家教stupid bird,它要哭了,代码要怎么改,才能使output_1正确运行???

最普通查找

#include<stdio.h>

int search(int key,int a[],int len)
{
	int ret = -1;
	for(int i=0;i<len;i++)
		{
			if(key==a[i])
				{
					ret = i+1;
					break;
				}
		}
	return ret;
}

int main()
{	int k;
	printf("please input the number you want:\n");
	scanf("%d",&k);
	int a[]={1,2,3,4,5,6,7,8,9}; 
	int r=search(k,a,sizeof(a)/sizeof(a[0]));
	if(r==-1)
		printf("the statistics is not here");
	else
		printf("%d is in the array and in the %d place",k,r);
		
	return 0;
	
	
} 

二分查找

#include<stdio.h>

int search(int key,int a[],int len)
{
	int ret=-1;
	int left = 0;
	int right =len - 1;
	while(left<right)
		{	
			int mid = (left+right)/2;
			if(a[mid]==key)
				{	
					ret=mid + 1;
					break;
				}
			else if(a[mid]>key)
				right = mid - 1;
			else
				left = mid +1;
		}
	return ret;
}


int max(int a[],int len)
	{
		int maxid = 0;
		for(int i=1;i<len;i++)
			{
				if(a[i]>a[maxid])
					maxid = i;
			}
		return maxid;
	}

int main()
{	
	int n;
	printf("please input the amount of numbers you want(up to 100):\n");
	scanf("%d",&n);
	
	int m,a[100];
	
	printf("please input the unsorted numbers:\n");
	for(m=0;m<n;m++)
		scanf("%d",&a[m]);
		
	for(int i = n-1;i>0;i--)//选择排序 
		{
			int maxid = max(a,i+1);
			int t = a[maxid];
			a[maxid] = a[i];
			a[i] = t;
		} 
	printf("the follow is the sorted numbers:\n");
	for(int i = 0;i<n;i++)
		{
			printf("%d ",a[i]);
		}
	printf("\n");
		
	
	
	int k;
	printf("please input the number you want:\n");
	scanf("%d",&k); 
	
	int r=search(k,a,n);//二分查找 
	if(r==-1)
		printf("the statistics is not here");
	else
		printf("%d is in the array and in the %d place of the sorted numbers",k,r);
		
	return 0;
	
	
} 

output_1

output_2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hedgeway

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值