[C语言]——数组练习

目录

练习1:多个字符从两端移动,向中间汇聚

练习2:⼆分查找


练习1:多个字符从两端移动,向中间汇聚

编写代码,演⽰多个字符从两端移动,向中间汇聚
#include <stdio.h>
int main()
{
 char arr1[] = "welcome to bit...";
 char arr2[] = "#################";
 int left = 0;
 int right = strlen(arr1)-1;
 printf("%s\n", arr2);
 while(left<=right)
 {
   Sleep(1000); //睡眠1000毫秒
   arr2[left] = arr1[left];
   arr2[right] = arr1[right];
   left++;
   right--;
   printf("%s\n", arr2);
 }
 retutn 0;
}

system("C/S"); //system函数是库函数,执行系统指令 C/S是清理控制台屏幕信息

练习2:⼆分查找

在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。 ⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。
#include <stdio.h>
int main()
{
 int arr[] = {1,2,3,4,5,6,7,8,9,10};
 int left = 0;
 int right = sizeof(arr)/sizeof(arr[0])-1;
 int key = 7;//要找的数字
 int mid = 0;//记录中间元素的下标
 int find = 0;
 while(left<=right)
 {
   mid = (left+right)/2;
   if(arr[mid]>key)
   {
     right = mid-1;
   }
   else if(arr[mid] < key)
   {
     left = mid+1;
   }
   else
   {
     find = 1;
     break;
   }
 }
 if(1 == find )
   printf("找到了,下标是%d\n", mid);
 else
   printf("找不到\n");
}
求中间元素的下标,使⽤ mid = (left+right)/2 ,如果left和right⽐较⼤的时候可能存在问
题,可以使⽤下⾯的⽅式:
mid = left+(right-left)/2;

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值