C语言与人生:数组交换和二分查找

少年们,大家好。我是博主那一脸阳光,今天和分享数组交换和二分查找。
前言:探索C语言中的数组交换操作与二分查找算法

在计算机编程领域,特别是以C语言为代表的低级编程语言中,对数据结构的理解和熟练运用是至关重要的。数组作为最基本的数据结构之一,在C语言中被广泛应用,它允许我们一次性存储和管理相同类型的一系列数据元素。

数组交换操作是数组处理中常见的基本操作之一,常用于排序算法、冒泡排序、选择排序等过程中,通过交换数组中两个指定位置的元素来达到改变数组元素顺序的目的。在C语言中,交换数组元素通常需要借助一个临时变量来实现,这既体现了程序设计的灵活性,也展示了指针操作的精妙之处。

另一方面,二分查找算法是一种基于有序数组的高效搜索算法。其核心思想是在有序数组中,每次通过比较中间元素将待查找区间缩小一半,直至找到目标值或确定目标不存在于数组中。在C语言中实现二分查找,不仅能够提升代码的运行效率,而且能帮助我们深入理解递归和循环等控制结构的应用,以及如何有效利用数组的有序特性进行问题求解。

综上所述,掌握C语言中数组交换操作以及二分查找算法,不仅有助于日常编程实践,也有利于提高逻辑思维和问题解决能力。接下来,我们将详细介绍这两种操作的具体实现方式和应用场景。
我来分享一道题,交换两个数组,然后打印出来。
数组内容:

第一个数组Happy new year!!!!
第二个数组 "##################";
```交换两个数组内容> 这是个思维导图,我们我把这个给规划一下,从而使得这个问题变得简单明了。
> 
> **>第一步创建两个数组;```c> char array1[]={"Happy new year!!!!"};
> char array2[]={"###################"};

在这里插入图片描述

这时候我们需要计算交换次数,那交换多少次呢?我们再来规划一下这个问题。
在这里插入图片描述在这里插入图片描述
可以看到他们元素大小都是一样的才能交换,负责没写的部分因为没有斜杠,会出现乱码,
所以得出结论,他们数组元素的内容是一样多的。我们想要访问某个元素的时候就需要使用到下标,一个元素的下标是【0】,好我们确定一个元素的下标,那我们找到最后一个元素的下标是,数组元素所有的内容减1,就是下标。

int left=0int right=strlen(arr1)-1

这里left是数组第一个元素的下标,strlen计算出的是数组元素的大小所以减1就是数组下标。
那接下来我们该如何访问数组下标呢?那介绍一下遍历数组
在C语言编程中,数组是最基础且广泛使用的数据结构之一。它允许我们将相同类型的数据元素存储在一起,并通过索引进行访问。本篇将详细介绍如何在C语言中遍历数组,包括常见的遍历方法以及相关示例。
在C语言中,遍历数组通常指的是访问数组中的每一个元素。以下是一些常用的遍历数组的方法:

  1. 使用for循环遍历数组
. // 假设有一个整数数组arr,长度为n
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]); // 获取数组元素个数for (int i = 0; i < n; ++i) {printf("数组的第 %d 个元素是: %d\n", i + 1, arr[i]);
}
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i = 0;
int n = sizeof(arr) / sizeof(arr[0]);while (i < n) {printf("数组的第 %d 个元素是: %d\n", i + 1, arr[i]);++i;
}

好大家有所理解遍历数组了,那我们把这道题解决一下吧

char arr1[] = "Happy new year!!!!";char arr2[] = "##################";int left = 0;int right = strlen(arr1) - 1;```while(left <= right){arr2[left] = arr1[left];arr2[right] = arr1[right];left++;right--;printf("%s\n", arr2);}return 0;}这段代码通过遍历数组,访问数组元素实行交换,大家应该已经能有所理解了吧。好我们下篇来分享二分查找。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

junit单元测试Mock

在平常工作&#xff0c;经常会用到单元测试&#xff0c;那么单元测试应该怎么写呢&#xff1f; 1&#xff1a;引入包&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题&#xff0c;最头疼的就是大量的文献检索和阅读&#xff0c;从研究的角度上我们可以将文献分为四类&#xff1a; 理论文献&#xff1a;为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关&#xff0c;甚至由于理…

【2023】hadoop基础介绍

&#x1f4bb;目录 Hadoop组成HDFSHDFS操作HDFS分布式文件存储NameNode元数据数据读写流程 YARN和MapReduceMapReduce&#xff1a;分布式计算YARN&#xff1a;资源管控调度YARN架构提交任务到**YARN中运行** Hadoop组成 hadoop安装教程可以看我这篇文章> &#x1f345;hado…

RFC7636-PKCE

前言 PKCE &#xff08;RFC 7636&#xff09; 是授权代码流的扩展&#xff0c;用于防止 CSRF 和授权代码注入攻击。 PKCE 不是客户端身份验证的一种形式&#xff0c;PKCE 不能替代客户端密码或其他客户端身份验证。即使客户端使用客户端密码或其他形式的客户端身份验证&#…

03.QT命名规范及快捷键(部分)

一、命名规范 1.类名 大驼峰规则&#xff1a;首字母大写&#xff0c;单词和单词之间首字母大写。 2.变量名 小驼峰规则&#xff1a;首字母小写&#xff0c;单词和单词之间首字母大写。 二、快捷键 1.代码操作相关 注释&#xff1a;ctrl / 运行&#xff1a;ctrl r 编译…

从入门到精通UNet: 让你快速掌握图像分割算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构五、训练模型5.1 模型训练流程5.2 模型评估指标5.…

redis 三主六从高可用docker(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) 此博客解决&#xff0c;redis加入集群后&#xff0c;是用于停掉后重启&#xff0c;将nodes.conf中的旧的Ip替换为新的IP&#xff0c;从而达到不会因为IP变化导致集群无法…

【递归、搜索与回溯】综合练习

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;找出所有子集的异或总和再求…

音阶是音乐理论的基本概念之一

音阶是音乐理论的基本概念之一&#xff0c;它是一组按照音高顺序排列的音。不同类型的音阶有不同的音阶结构。在西方音乐中&#xff0c;最常见的是大调音阶和小调音阶。下面是这两种音阶的基本构成&#xff1a; 大调音阶&#xff08;Major Scale&#xff09;&#xff1a; 大调音…

[Python]两个杯子取水问题

利用两个杯子巧取三升水&#xff1a; 今天的这个趣味数学小游戏是利用两个没有刻度的水杯&#xff0c;巧妙地取出三升水来。 题目的条件是&#xff1a;一个总容量为6升的杯子和一个总容量为5升的杯子&#xff0c;同时面前有无限容量的水供你使用。不借助其它任何的容器&#xf…

just recode for myself 统计大模型SFT的结果与version2中text的结果bad case

问题描述&#xff1a; 利用Qwen大模型进行SFT (lora)。将生成的结果与version2版本下的中文test.txt进行bad case分析 代码实现&#xff1a; from tqdm import tqdm, trange import os import re from typing import List import json from pdb import set_trace as stoppip…

测试新字符设备驱动代码

一. 简介 上一篇文章编写了新字符设备驱动框架的代码&#xff0c;并编写了 LED灯IO初始化工作&#xff0c;也编写了Led的开与关函数。文章地址如下&#xff1a; 向新字符设备驱动代码框架中添加Led功能函数-CSDN博客 本文对所完成的新字符设备驱动代码进行测试。通过测试程…

12、高可用性

什么是高可用性 高可用性不是绝对的&#xff0c;只有相对更高的可用性。百分之百的可用性是不可能达到的。可用性的定义不仅仅包括服务正在运行的时间段&#xff0c;还包括应用是否能以足够好的性能处理请求。 导致宕机的原因 在运行环境的问题中&#xff0c;最普通的问题是…

7-1 sdut-Collection-sort--C~K的班级(II)--笔记篇

题目 经过不懈的努力&#xff0c;CXK终于当上了班主任。 现在他要统计班里学生的名单&#xff0c;但是CXK在教务系统中导出班级名单时出了问题&#xff0c;发现会有同学的信息重复&#xff0c;现在他想把重复的同学信息删掉&#xff0c;只保留一个&#xff0c; 但是工作量太大…

LeetCode 热题 100——283. 移动零

283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…

使用anaconda创建notebook工程

1.由于每个工程使用的环境都可能不一样&#xff0c;因此一个好的习惯就是不同的工程都创建属于自己的环境&#xff0c;在anaconda中默认的环境是base&#xff1a; //括号中名字&#xff0c;代表当前的环境 (base)dragonmachine: $ conda create --nameexample2.激活环境 // 环…

伺服电机:电子齿轮比

电子齿轮比的概念 位置控制模式下&#xff0c;输入的位置指令是对负载位移进行设定&#xff0c;而电机的位置指令是编码器单位&#xff0c;是对电机的位移进行进行设定&#xff0c;电机位置指令与输入位置指令的比例就是电子尺齿轮比。 输入的位置指令&#xff0c;所对应的位…

JVM内存区域与常见问题

内存结构 这里先以JDK1.8 hotspot垃圾收集器为例&#xff0c;讲讲每块区域存储的数据以及可能会抛的异常。 堆 存放对象实例&#xff0c;会出现内存溢出或内存泄露等情况。 栈 一次方法调用会产生一个栈帧&#xff0c;如果出现递归死循环调用栈空间满了&#xff0c;会出现…

【全网首发】洛谷贪心题解集合

贪心 1.P2240 【深基12.例1】部分背包问题 【深基12.例1】部分背包问题 - 洛谷 思路 万不要被题目给误导了&#xff0c;这道题是贪心。 所有金币都可以分开&#xff0c;也就是说只要按照性价比最高的取一定得到的价值最大。 性价比就是这堆金币的价值除以重量。 只需要把…

85双指针解三数之和

问题描述&#xff1a;给你一个包含n个整数的数组nums&#xff0c;判断nums中是否勋在三个元素a,b,c使得abc0,请你找出所有和为0且不重复的三元组。 求解思路&#xff1a;如果使用for循环的方式&#xff0c;n3的时间复杂度&#xff0c;可以采用双指针的方式&#xff0c;先将整个…