数组练习题目

二分查找:

举个例子,我们平常买东西,比如买了一双鞋,如果我告诉你不高于500元,然后让你猜价格,你肯定不会从1元,2元开始猜,这得猜到什么时候去,我们一般都会从它一个比较中间的值猜,比如250,这就是二分查找,所谓的二分查找就是折半查找,关键点是找出它的中间值,然后拿这个中间值去和要查找的数进行比较,如果大了就往小猜,小了就再往大了猜。

注意事项:

二分查找只针对有序且是升序的数组,不针对乱序的。
下面有一个题目:让用户输入一个想查找的数,然后在创建好的数组里查找有没有这个数,如果有,则输出它的下标,如果没有,则输出没找到。

int main()
{
//1.首先需要定义一个数组
int arr[]={1,4,5,7,9};

//2.输入要查找的数
printf("请输入你想查找的数\n");
int input=0;
scanf("%d",&input);

//3.定义变量
//假设flag=0的情况为没找到,后面找到了的情况就让flag=1
int flag=0;

//定义第一个元素的下标变量
int left=0;

//定义最后1个元素的下标变量,最后一个元素下标=数组元素个数-1
int right=(sizeof arr/sizeof(int))-1;

//定义中间值的下标变量
int mid=0;


//4.进入循环
while(left<=right)
/*当left=right时,进入最后一轮查找,此时left=right=mid,就只剩这最后1个元素了,中间值也是它*/
{


//计算中间值
mid=(left+right)/2;

//将中间值和input的值进行比较
if(arr[mid]<input)
{
left=mid+1;
}


else if(arr[mid]>input)
{

right=mid-1;

}

else
{
flag=1;
break;
}

}

if(flag==1)
{
printf("找到了,下标是%d",mid);

}

else
{
printf("抱歉,没找到\n");

}

return 0;
}

多个字符从两端移动,像中间汇聚

#include <stdio.h>
#include <string.h>
int main()
{


//本来是打印**********的然后用welcome to bit!来代替这组

考察了字符数组,以及遍历循环的知识点

//首先定义数组
char arr1[] = "welcome to bit!!!";
char arr2[] = "*****************";


//这一步操作主要是为了让两个数组的字符长度一致,strlen函数是用来统计字符串长度的,它包括\0
//但是用sizeof(arr1)/sizeof(char)这个方法,它不包含\0.
//printf("%d\n",strlen(arr1));
//printf("%d\n",strlen(arr2));


//定义最左边第一个元素的下标和最右边最后一个元素的下标
int left=0;
int right=strlen(arr1)-1;


//进入循环
while(left<=right)
{

arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
//休眠函数,单位是毫秒,需要包含头文件#include <windows.h>
Sleep(1000);

//清屏函数,也是需要包含头文件#include <windows.h>
system("cls");
left++;
right--;

}


return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值