数据结构与算法之—数组(一)

数据结构与算法(一)【数组】【详解及实战】 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 阅读详情
       使用csdn已经2年多了,一直想在上面写点东西,确一直没有实施,在学校的时候,在业余的时候自己总会写点小程序,小算法什么的,由于工作后时间不充裕,有时间也想休息,出了工作的时候写点代码,回家基本不太想动,最近工作不是太忙,想自己写的感兴趣的东西。

由于自己在毕业之前自己平时写过较多的数据结构的东西,后来发现在找工作的时候还很有用,虽然在工作上,因为要提高效率的原因,很多的数据结构和算法都被一些封装好的数据结构和一些现成的算法所取代,但自己还是在时间可控的情况下,自己实现自己的数据结构和算法,很少去使用现成的库和算法,这也使得自己有时间在解决一些问题的时候会有些较好的想法。

对于一个合格的程序员来说,掌握好基本的数据结构和算法是十分有必要的,很好的掌握好这些,在你处理一些问题的时候,有时候会有很大的帮助的。

自己就从数据结构上的教材内容开始吧。


首先就是数组的操作,数组估计是我们平时用的最多的数据结构了,他的功能和性能都是很强大的,大家用起来也是最爽的,现在就来写几个数据的几个操作和算法吧

 

1.数组的插入

2.数组的删除

 这里没有考虑动态内存分配的情况,只考虑在预留空间范围的操作,实际上这种也是比较有用的,可以事先分配合适的空间,在运行时不再分配空间,可以在有些实际开发中提高程序的稳定性和安全性,以及降低动态内存分配的开销,降低内存碎片。

#include<iostream>   
using namespace std;  
  
template<class T>  
  
bool  insert(int p, T value, T a[], int size)  
{  
    if(p < 0 || p > size)  
    {  
        return false;  
    }  
  
    for(int n = size; n >= p; n--)  
    {  
        a[n] = a[n-1];  
    }  
    a[p] = value;  
  
    return true;  
}  
  
template<class T>  
bool del_element(int p, T a[], int size)  
{  
    if(p < 0 || p >= size)  
    {  
        return false;  
    }  
  
    for(int n = p; n < size-1; n++)  
    {  
        a[n] = a[n+1];  
    }  
  
    return true;  
}  
  
int main()  
{  
    int a[10] = {0};  
    for(int i = 0; i < 5; i++)  
    {  
        a[i] = i;  
    }  
    insert(0, -1, a, 5);  
    del_element(0, a, 6);  
  
    for(int j = 0; j < 8; j++)  
    {  
        cout<<a[j]<<endl;  
    }  
    return 0;  
}  




06-数组 -c语言初学系列 ps:此教程配套ppt下载地址如下,如果需要可以下一下,不过其实也无所谓,这篇文章就是全部文本。输入A,B,C,D,E五个班学生的C语言成绩,求平均分(设每班30人)要定义30个变量,很麻烦,如果学生数量有1000个呢?程序L6_5.C :输入两个数,输出其中最大数。请输入30个同学C语言的成绩,求平均分。练习:求一个3×3矩阵对角线元素之和。6.1 一维数组的定义和引用。6.3 多维数组的定义和使用。练习:打印出以下的杨辉三角形。6.2 一维数组的初始化。6.4 数组作为函数参数。 阅读详情

相关推荐

AI智能体赋能Cypress:自动化前端测试的新范式

自动化测试是现代软件工程保障质量的核心实践,其原理是通过脚本模拟用户操作,对软件功能进行验证。随着大语言模型(LLM)和智能体(Agent)技术的发展,测试自动化正迈向智能化新阶段。智能体能够理解自然语言描述的测试需求,并自主规划、执行测试步骤,这为应对前端UI频繁变更、测试用例维护成本高等挑战提供了新思路。在工程实践中,将Cypress这一流行的前端测试框架封装为智能体可调用的标准化技能(Skill),是实现这一愿景的关键。通过设计清晰的交互协议和状态管理机制,智能体可以像人类测试工程师一样“感知”页面状

weixin_33726318的博客 686

归并排序

package com.study.sort; import java.util.Arrays; /** * 参考:https://www.cnblogs.com/chengxiao/p/6194356.html *8 4 5 7 1 3 6 2 *1、将原始数组分割为最小数组序列,先将子序列进行排序,然后向上归并; * * mergeItemStart==>:startIndex:0 midIndex:0 endIndex:1 handLen:2 * array:

accordall的专栏 221

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

C语言学习(三) 数组

1. 一维数组 正如第一节中所说的那样,数组有三个特征点:数组名、数组元素数据类型、数组元素个数 数组是内存中一段连续存储的内存单元,在编译的时候才对其分配内存空间 1.1 一维数组的定义和初始化 int a[3] = { 1 , 2 , 3}; 类似于上面这条语句,一般都是这样定义的: 数据类型 数组名称 [ 数组元素数量 ] = { 初始化的值 }; 也可以不需要初始化,在后面的过程中进行初始化即可 1.2 一维数组的使用 使用一维数组的时候可以使用数组名加下标、指...

qq_37388518的博客 845

AXI4-Stream FIFO IP核实战指南——从配置到跨时钟域处理

本文是AXI4-Stream FIFO IP核的实战指南,详细讲解了其作为数据流缓冲核心的作用。文章重点涵盖从Vivado环境下的IP核配置、关键参数(如深度与宽度)设定,到跨时钟域处理的完整流程。深入解析了TVALID/TREADY握手协议及TLAST等信号,并提供了常见问题排查与调试技巧,帮助开发者高效实现FPGA/SoC系统中可靠的数据流缓冲与同步。

weixin_29251567的博客 480

电子取证之服务器取证思路

服务器取证是一个技术性很强的领域,涉及到多个环节,包括网站重构、网站代码分析、容器分析等。数据库密码的获取通常通过查看配置文件、日志文件、备份等途径,同时可以通过一些绕过技术如禁用身份验证来获取权限。对于不同的数据库,需要根据其特性采取相应的应对方法和命令。

2401_84830066的博客 2488

12 数 组

1.为什么需要数组 为了解决大量同类型数据的存储和使用问题 为了模拟现实世界 2.数组的分类:                  一维数组:                             怎样定义一维数组:                              为n个变量连续分配存储空间                              所有的变量数据类型必须相

qq_34735601的博客 351

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

4.将数组a中的n个整数按逆序存放。即:a[0]与a[n-1]交换,a[1]与a[n-2]交换......。交换要调用函数 void(int *a,int n)。

4.将数组a中的n个整数按逆序存放。即:a[0]与a[n-1]交换,a[1]与a[n-2]交换......。交换要调用函数 void(int *a,int n)。

nianci602的博客 593

EMI辐射发射超标案例

EMI辐射发射超标案例

让你爱上电路设计 8502

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

数据结构与算法一【数组】

数组在内存中的存储特点:

Everyday try to become better -Kobe Bryant 290

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据结构与算法——一、数组

数据结构与算法——一、JAVA数组前言数组简介数组定义数组类ArrayList时间空间复杂度 前言 本次以总结学习过程的心得,针对最基本的数组学习过程还有一些时间空间复杂度的个人看法。 数组简介 看到数组就会想起最简单的结构一维数组——int a[n](n=0,1,2,3。。。)。 简要的分析一下必要条件:数组存储类型——int,一个数组首先最需要的就是大小——n,还有个个元素存放的下标——从0开...

cn89214的博客 286

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

数据结构与算法:数组(一)

数据结构与算法是计算机发展的基石,现代计算机的起源是数学,数学的核心是算法,计算机历史上每一次大的变革都离不开算法的推动。纵然“条条大路通罗马”,但好的算法永远比提高硬件设备管用。 在排序数组中找出给定数字出现的次数 计算两个有序整型数组的交集 如何找出数组中重复次数最多的数 在On的时间复杂度内找出数组中出现次数超过了一半的数 找出数组中唯一的重复元素 解题方法 引申一没有要求每个数组只访

梦里水乡的专栏 3571

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【数据结构与算法(一)】——数组

这是第一天==&amp;amp;amp;amp;gt; 来自《剑指offer》 数组 1、最简单的数据结构 2、占据连续的内存,然后是按照顺序存储数据的 3、使用数组时,先创建,这个时候需要指定数组的容量大小,这样就根据大小分配内存了,计算机也不管你在这个内存中存储了多少数据,反正就是根据你指定的大小让你这个数据占据这么大的内存。所以数组会有以下缺点:第一个就是...

OldBowl 397

【数据结构与算法】一 数组

数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Structure=(D,R) 其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。

maguochao_Mark的博客 441

【一】Python数据结构与算法:基础概念与数组

数据结构与算法是计算机科学的基础,也是每个程序员必须掌握的核心技能。Python作为一门简洁而强大的编程语言,为我们学习数据结构与算法提供了良好的平台。本系列文章将带您从零开始,逐步深入理解Python中的数据结构与算法。本文介绍了数据结构的基础概念,重点讲解了数组的实现和应用。数组作为最基础的数据结构,是学习其他更复杂数据结构的基础。在下一篇文章中,我们将学习链表和栈的实现与应用。

Aerkui的博客 880

数据结构与算法《一》数组、链表、栈、队列

桶排序 原理:桶排序(Bucket Sort)顾名思义,会用到“桶”,桶我们可以将其想象成一个容器,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。 换句话说:桶排序就是将待排序集合中处于同一值域的元素存入同一个桶中,也就是根据元素值特性将集合拆分成多个区域,则拆分后 ...

624

数据结构与算法总结(一)——数组

一些基础 数组是一种线性的数据结构,每个节点的大小一样,在内存上连续。可以通过下标快速定位想要查询的目标值,因此数组检索的效率高。 数组的长度一旦设定就无法改变,删除数组的元素,事实上并不是删除,而是覆盖。数组只能通过一个新的值来覆盖旧的值。 题型 二分法 有序数组查找,可以使用二分法。 二分法最重要迷惑的点就是while循环里面是否有=,这个看情况,如果给定的数组右边是包括边界的,那么就要用=,因为当值取到最后一个元素的时候,还是可能是目标值,因此还是需要进入循环。 另外一个很迷惑的点就是是否新的边

weixin_43975276的博客 176

数据结构与算法(一)数组、链表

数组和链表是最重要的、最基本的数据结构,它们是其它所有数据结构的基础,它们无处不在。 我们通常将数组和链表当作线性表使用,以下介绍数组和链表默认当作线性表。 1、数组 数组是应用最广泛的一种数据结构,几乎所有高级编程语言都会将数组作为基本数据类型使用,因此,数组通常不会被当做一种数据结构单独拿出来讲解。 数组是最简单的数据结构,当做学习数据结构的敲门砖,以此为基础,了解数据结构的基本概念以...

SunSatan的博客 419

数据结构与算法——数组与链表(一)

1 数组 定义 数组是一种用一片连续的内存空间来存储一组相同类型的数据的线性表结构。 “连续的内存空间”这个特点,决定了数组支持随机访问的特性。计算机通过地址来访问内存中的数据,数组在内存中存放的是它的首地址,一维数组的寻址公式为a[i]address=baseaddress+i∗sizeof(datatype)a[i]_{address} = base_{address} + i * sizeof(datatype)a[i]address​=baseaddress​+i∗sizeof(datatype)。

Jaeshn 263

数据结构与算法(一): 动态数组

小码哥数据结构与算法(一): 动态数组 本篇是恋上数据结构与算法(第一季)的学习笔记, 使用JAVA语言 一、数组(Array) 数组是一种顺序存储的线性表,所有元素的内存地址都是连续的 int[] array = new int[]{11, 22, 33} 复制代码 在很多编程语言中, 数组有个致命的缺点, 无法动态修改容量 实际开发中我们希望数组的容量是动...

JavaEdge全是干货的技术号 2479

数据结构与算法再探(一)数组、链表

是一种线性数据结构,由一组相同类型的元素组成,数组的内存开销较小,存储元素时没有额外的指针开销,元素在内存中是连续存储的,可以通过下标在 O(1) 时间内访问任意元素。数组的大小在创建时确定,不能动态改变;无法动态调整,可能导致内存浪费或不足。而且插入和删除效率低:在数组中插入或删除元素需要移动大量元素,时间复杂度为 O(n)。

dingyahui的博客 805

数据结构与算法Java(一) 数组与链表

一、 数组 定义:数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 特点:支持随机访问,根据下标随机访问的时间复杂度为O(1);插入删除操作的平均时间复杂度为O(n)。 注意点:警惕数组的访问越界问题,在java中,会做越界检查,越界时会报java.lang.ArrayIndexOutOfBoundsException ArrayList与数组...

suhand的博客 278

数据结构与算法(一)—— 数组

数组,即由相同类型的元素的集合组成的有序数据结构,使用一块连续的内存空间。 详情参照数组-维基百科 数组内存空间示例图 基于Python实现了简单的数组的数据结构,代码如下。 自定义数组数据结构(Python) 实现的比较简单,在初始化函数中,确定了定长数组的长度;赋值直接给对应下标赋...

宇宙有只 AGI 的博客 173
下一篇: 数据结构与算法之—数组(二)
菜鸟懿
博客等级 码龄14年 98粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值