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

数组(3)

12.数组练习4 反转数组

#include <stdio.h>
void printArr(int arr[], int len);
int main()
{/*需求:键盘录入5个数据并存入数组,完成一下要求1.遍历数组 2.反转数组3.再次遍历*///1.定义数组int arr[5] = { 0 };int len = sizeof(arr) / sizeof(int);//2.键盘录入数据for (int i = 0; i < len; i++){printf("请录入第%d个元素\n", i + 1);scanf_s("%d", &arr[i]);}//3.遍历数组printArr(arr, len);//4.反转数组int i = 0;int j = len - 1;while (i < j){int temp = arr[i];arr[i] = arr[j];arr[j] =  temp;i++;j--;}//5.遍历数组printArr(arr, len);return 0;
}
void printArr(int arr[], int len)
{for (int i = 0; i < len; i++){printf("%d\n", arr[i]);}
}

13.数组练习5 打乱数组中的数据

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{/*需求:定义一个数组,存入1-5,要求打乱数组中所有数据的顺序        *///1.定义数组int arr[] = { 1,2,3,4,5, };int len = sizeof(arr) / sizeof(int);//2.遍历数组,得到每一个元素,让这个元素跟随机索引处的元素进行交换//设置种子srand(time(NULL));for (int i = 0; i < len; i++){//获取一个随机索引//0~4int index = rand() % len;//拿着i指向的元素,跟index指向的元素进行交换int temp = arr[i];arr[i] = arr[index];arr[index] = temp;}//3.遍历数组for (int i = 0; i < len; i++){printf("%d\n", arr[i]);}
}

14.数组常见算法1 基本查找/顺序查找

小程序

#include <stdio.h>
int order(int arr[], int len, int num);int main()
{/*需求:数组的基本查找核心思路:就是从数组的0索引开始,依次往后查找如果找到了,就会返回数据对应的索引如果没有找到,就会返回-1*///1.定义数组int arr[] = { 11,22,55,77,44 };int len = sizeof(arr) / sizeof(int);//2.定义一个变量表示要查找的数据int num = 55;//3.调用函数查找数据int index =order(arr, len,num);//4.输出索引printf("%d\n", index);return 0;}//作用:查找数组中的数据
//返回值:数据所在的索引
int order(int arr[], int len, int num)
{for (int i = 0; i < len; i++){if (arr[i] == num){return i;}}return -1;}

笔记

15.数组常见算法2 二分查找/折半查找

小程序

#include <stdio.h>
int binarySearch(int arr[], int len, int num);
int main()
{/*需求:数组的二分查找在7,23,79,81,103,127,131,147 中查找数据*///1.定义数组int arr[] = { 7,23,79,81,103,127,131,147 };int len = sizeof(arr) / sizeof(int);//2.定义变量表示要查找的数据int num = 150;//3.调用函数查找数据int index = binarySearch(arr, len, num);//4.输出printf("%d\n", index);return 0;
}//作用:利用二分查找法查找数据
//返回值:数据在数组中的索引
//找到了,真实的索引
//没有找到,返回-1
int binarySearch(int arr[], int len, int num)
{//1.确定查找的范围int min = 0;int max = len - 1;//2.利用循环不断得进行查找while (min <= max){//确定中间位置int mid = (min + max) / 2;//比较//min max mid 表示索引//num表示要查找的元素//坑:arr[mid]跟num进行比较if (arr[mid] < num){//要查找的数据在右边min = mid + 1;}else if (arr[mid] > num){//要查找的数据是在左边max = mid - 1;}else{return mid;}}//3.如果min大于maxl,表示数据不存在,赶回-1return -1;}

笔记

http://www.dtcms.com/a/360716.html

相关文章:

  • Proteus8 仿真教学全指南:从入门到实战的电子开发利器
  • GitHub 热榜项目 - 日榜(2025-09-01)
  • 基于YOLOv11的脑卒中目标检测及其完整数据集——推动智能医疗发展的新机遇!
  • MySQL下载及安装(Windows 11)
  • 【LeetCode】3524. 求出数组的 X 值 I (动态规划)
  • 【LeetCode 155】—最小栈 - 详解与实现
  • 阿里Qoder怎么样?实测对比TRAE SOLO 和 CodeBuddy IDE
  • 保健品跨境电商:如何筑牢产品质量与安全防线?
  • 数据库事务隔离级别与 MVCC 机制详解
  • 机器学习(四)KNN算法-分类
  • 哈希表-1.两数之和-力扣(LeetCode)
  • git将当前分支推送到远端指定分支
  • YOLO 目标检测:YOLOv3网络结构、特征输出、FPN、多尺度预测
  • Redis--Lua脚本以及在SpringBoot中的使用
  • 三、Gitee平台使用指南
  • 第 94 场周赛:叶子相似的树、模拟行走机器人、爱吃香蕉的珂珂、最长的斐波那契子序列的长度
  • Eclipse Compiler for Java (ECJ):安装指南与高效快捷键全解析
  • 构建无广告私人图书馆Reader与cpolar让电子书库随身携带
  • 鸿蒙总改变字体大小设置
  • 【Linux篇章】再续传输层协议UDP :从低可靠到极速传输的协议重生之路,揭秘无连接通信的二次进化密码!
  • 深度学习框架与工具使用心得:从入门到实战优化
  • Unity核心概念③:Inspector窗口可编辑变量
  • 电科金仓 KFS 场景化实践路径解析:从行业场景落地看技术价值转化
  • JP4-1-MyLesson项目简介
  • 掌握正则表达式与文本处理:提升 Shell 编程效率的关键技巧
  • Go 语言 sync 包解析
  • [React]监听Form中某个字段的变化
  • vue2》》Computed、Watch
  • 【Vue2 ✨】Vue2 入门之旅(四):生命周期钩子
  • Git从零到远程协作:手把手实战指南