当前位置: 首页 > news >正文

数组练习(深入理解、实践数组)

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

编写代码,演示多个字符从两端移动,向中间汇聚

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{//解题思路://根据题意再结合数组的思想我们可以设置两个数组//arr1[left]/[right]替换到arr2[left]/right(每一步替换一个)//就可以达成题目的目的。//↓↓↓char arr1[] = "wo hao shuai!";char arr2[] = "             ";int left = 0;int right = strlen(arr1) - 1;//这里使用strlen函数需要包含头文件 <string.h>//strlen计算字符串长度时遇到/0就会停止。printf("%s\n", arr2);while (left <= right){arr2[left] = arr1[left];arr2[right] = arr1[right];left++;right--;printf("%s\n", arr2);}return 0;
}

运行结果:

 

这样写仅仅只是显示了每一步的结果,并没有一个动态过程,原因是因为代码运行速度过快,所以此时我们可以加入sleep函数 :

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{//解题思路://根据题意再结合数组的思想我们可以设置两个数组//arr1[left]/[right]替换到arr2[left]/right(每一步替换一个)//就可以达成题目的目的。//↓↓↓char arr1[] = "wo hao shuai!";char arr2[] = "             ";int left = 0;int right = strlen(arr1) - 1;//这里使用strlen函数需要包含头文件 <string.h>//strlen计算字符串长度时遇到/0就会停止。printf("%s\n", arr2);while (left <= right){Sleep(1000);//单位是ms  Sleep休眠函数S一定要大写!!arr2[left] = arr1[left];arr2[right] = arr1[right];left++;right--;printf("%s\n", arr2);}return 0;
}

运行结果:(因为上传视频太复杂了,大家可以自行下去尝试。

进阶 :

有兴趣的朋友们可以加system(“cls”)函数加入到以上函数中试试,(需要包含#include<stdlib.h>这个头文件。

2.练习2:二分查找

在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。
⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。(使用前提是所需查找的数组内部是有序的。)

#define _CRT_SECURE_NO_WARNINGS 1
#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 - left) / 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);elseprintf("找不到\n");
}

执行结果:


完。 

http://www.lryc.cn/news/536024.html

相关文章:

  • Bigemap Pro如何进行面裁剪
  • acwing算法全总结-数学知识
  • SpringMVC学习使用
  • 10、《文件上传与下载:MultipartFile与断点续传设计》
  • DeepSeek 本地部署(电脑安装)
  • DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析
  • Docker compose 以及镜像使用
  • HCIA项目实践--RIP相关原理知识面试问题总结回答
  • 使用Python进行云计算:AWS、Azure、和Google Cloud的比较
  • c++ 实现矩阵乘法
  • 无线4G多联机分户计费集中控制系统
  • 文字转语音(一)各种实现说明
  • 大语言模型多代理协作(MACNET)
  • 【笛卡尔树】
  • Java堆外内存的高效利用与性能优化
  • 【Unity3D优化】使用ASTC压缩格式优化内存
  • iptables网络安全服务详细使用
  • MiC建筑引领未来:中建海龙的探索与实践
  • 清华精品资料:DeepSeek从入门到精通、DeepSeek赋能职场
  • Nginx进阶篇 - nginx多进程架构详解
  • SpringBoot初始化8个常用方法
  • boolen盲注和时间盲注
  • CTF-web:java-h2 堆叠注入rec -- N1ctf Junior EasyDB
  • TUSB422 MCU 软件用户指南
  • BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234100
  • 常见的排序算法:插入排序、选择排序、冒泡排序、快速排序
  • vue学习9
  • TDengine 性能测试工具 taosBenchmark
  • 【xdoj离散数学上机】T283
  • Javaweb中,使用Servlet编写简单的接口