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

C#计算八字 private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" }; 阅读详情

实际上下面几个数组操作在实际工作中都有一些应用的:
就拿求两个有序数组的集合的交集来说, 我之前在一家公司呆过,做过短时间的公交项目,其公交换乘算法就,用到了有序整数集合求交的方法,在我未接触公交项目时还以为是什么图的相关算法,跟我想法大相径庭,确实没必要用图的相关算法,有更为简便和高效的算法。
 就最简单讲下,最简单的情况吧,把每个站点经过的线路的ID有序排列,那么要求两个站点的公交的线路ID的交集就行了,而他们是有序的,其复杂度是0(n),很巧妙吧,
再复杂的就是要换乘了,也就是前一个站点存放了,这个站周边的下一站的站点的索引,这也依次一个一个网下找,找到有交集的就是一个通路,其实最小换乘,最短距离都是
后面才算的,不是想象的什么最短路径之类的高复杂度算法哈。
 合并有序数组,实际工作也比较常用,尤其在在内存不够的情况下,要分开排序再合并,这类东西在搜索日志处理的时候会经常用的哈


#include<iostream>
using namespace std;


//合并两个有序数组

int* merg(int a[], int n, int b[], int m)
{
	int i = 0;
	int j = 0;
	int k = 0;
	int *c = new int[m+n];
	if (c==NULL)
	{
		return NULL;
	}

	while(i < n && j < m)
	{
		if(a[i] < b[j])
		{
			c[k++] = a[i++];
		}
		else
		{
			c[k++] = b[j++];
		}
	}

	while(i < n)
	{
		c[k++] = a[i++];
	}
	
	while(j < m)
	{
		c[k++] = b[j++];
	}

	return c;
}

//求两个有序数组集合的交集

int common_element(int a[], int n, int b[], int m, int c[])
{
	int i = 0;
	int j = 0; 
	int k = 0;
	int count = 0;
	while(i < n && j < m)
	{
		if(a[i] < b[j])
		{
			i++;
		}
		else if(a[i] == b[j])
		{
			c[k++] = a[i];
			i++;
			j++;
			count++;
		}
		else
		{
			j++;
		}
	}

	


	return count;
}

//求两个有序数组的并集

int union_element(int a[], int n , int b[], int m, int c[])
{
	int i = 0; 
	int j = 0;
	int k = 0;
	int count = 0;
	while(i < n && j < m)
	{
		if(a[i] < b[j])
		{
			c[k++] = a[i++];
			count++;
		}
		else if(a[i] == b[j])
		{
			c[k++] = a[i];
			i++;
			j++;
			count++;
		}
		else
		{
			c[k++] = b[j++];
			count++;
		}
	}

	while(i < n)
	{
		c[k++] = a[i++];
		count++;
	}

	while(j < m)
	{
		c[k++] = b[j++];
		count++;
	}

	return count;

}

int main()
{
	int a[5] = {0, 1, 2, 3, 5};
	int b[5] = {0, 2, 3, 4, 5};
	int *p = merg(a, sizeof(a)/sizeof(a[0]), b, sizeof(b)/sizeof(b[0]));
	for(int i = 0; i < sizeof(a)/sizeof(a[0]) + sizeof(b)/sizeof(b[0]); i++)
	{
		cout<<p[i]<<' ';
	}
	cout<<endl;

	int len = sizeof(a)/sizeof(a[0]) > sizeof(b)/sizeof(b[0]) ? sizeof(a)/sizeof(a[0]) : sizeof(b)/sizeof(b[0]);
	int *c = new int[len];
	memset(c, 0, len*sizeof(int));
	int count = common_element(a, sizeof(a)/sizeof(a[0]), b, sizeof(b)/sizeof(b[0]), c);
	for(int j = 0; j < count; j++)
	{
		cout<<c[j]<<' ';
	}
	cout<<endl;

	int *union_array = new int[sizeof(a)/sizeof(a[0]) + sizeof(b)/sizeof(b[0])];
	count = union_element(a, sizeof(a)/sizeof(a[0]), b, sizeof(b)/sizeof(b[0]), union_array);
	for(int k = 0; k < count; k++)
	{
		cout<<union_array[k]<<' ';
	}
	cout<<endl;

	return 0;
}


SpringBoot项目实战:5分钟搞定豆包大模型API接入(附完整代码) 本文详细介绍了如何在SpringBoot项目中快速集成豆包大模型API,仅需5分钟即可完成。从环境准备、依赖配置到核心服务封装和控制器层实现,提供了完整的代码示例和实战技巧,帮助开发者高效接入大模型能力,提升智能客服等应用的开发效率。 阅读详情

相关推荐

华为2019秋招笔试Java实现(2)

华为2019秋招笔试Java实现(2) 笔试日期2019年8月14日 第二题(200分) 题目描述 某程序员小A,有一种表格数据需要存储在文件中。表格中的每一行,由若干个字段组成,每个字段可以是整数或字符串(字符串只包含数字、字母以及特殊字符!@#%^&*()",)。小A设计了一种存储格式,采用文本的方式对表格数据进行存储。文本文件中的每一行,代表了表格数据中的一行数据。具体格式描述如下: 1、采用逗号分隔不同的字段(逗号前后无空格); 2、数字直接采用10进制的文本存储; 3、字符串的存储规则如下

hewhys的博客 1548

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

注:我们先由简到难总结一下常用的数据结构,如简单数组、链表、散列表、队列、栈、树、图等等,最后再来研讨算法。 一、线性表 线性表是很基本的一种数据结构,就如字面意思一样,它把若干数据线性组合在一起:每个元素都最多只有前相邻和后相邻元素,也就是元素之间首尾相接。典型的线性表结构有数组、链表、栈、队列等。它有一些特征(摘自百度百科): 1.集合中必存在唯一的一个“第一元素”。...

黄智霖的博客 1万+

台式机ubuntu系统屏幕无法调节的问题(已解决)(汇总)

背景:新配了一台主机,安装了双系统,windows下屏幕在带鱼屏上显示良好,但Ubuntu系统屏幕拉伸严重。 问题描述:系统没有适应屏幕被整个拉伸了,进入设置界面,显示Built-in Display,分辨率只有1024*768无法设置。 尝试一:网上最多的方法就是使用xrandr, 结果显示:xrandr:Failed to get size of gamma for output default 尝试二: 第一次进入命令行页面:login:填你的用户面 password:使用字母上方的数字键输入你的密码

weixin_45626706的博客 4624

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

数据结构与算法是计算机发展的基石,现代计算机的起源是数学,数学的核心是算法,计算机历史上每一次大的变革都离不开算法的推动。纵然“条条大路通罗马”,但好的算法永远比提高硬件设备管用。 如何判断一个数组中

梦里水乡的专栏 4075

从理论到波形:NE555多谐振荡器设计与示波器实战验证

本文详细介绍了NE555多谐振荡器的设计原理与实战验证方法。从基础理论到电路参数计算,再到面包板搭建与示波器测量,全面解析如何利用NE555芯片实现稳定的方波输出。通过实际案例演示了频率调整、占空比优化等技巧,并提供了常见问题排查指南,帮助电子爱好者快速掌握这一经典电路设计。

weixin_29159613的博客 281

别再死记硬背Payload了!深入理解Flask/Jinja2 SSTI的Python对象继承链与魔术方法

本文深入解析Flask/Jinja2 SSTI漏洞的底层原理,从Python对象模型出发,详细讲解如何通过魔术方法链实现RCE。文章揭示了Python对象继承链与魔术方法的精妙设计,提供了防御与绕过SSTI漏洞的实用技巧,帮助开发者深入理解漏洞本质并采取有效防护措施。

weixin_42525738的博客 356

数据结构与算法二:数组

一维数组: 一、概述: 数组在内存中是一片连续的空间且元素相同 可以快速根据索引定位到某元素 但是新增、删除元素的时候需要移动元素位置,效率会变低 二、数组的声明与创建: 1.有两种声明方式: int[] a; int a[]; 2.创建方式有两种: int[] a1 = new int[5]; //直接指定大小 int[] a2 ={1,2}; //有多少个value就有多大 三、自定义数组: 1.索引(数组索引)的语意: 索引可以有语意,也可以无语意,有语意如下标就是学号,能快速定位某学生;如果

qq_38837032的博客 1048

Python爬虫实战:构建高可用静态网页爬虫 - 以 Quotes 网站数据采集为例!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 461

数据结构与算法(二)数组

简介 数组是应用最广泛的数据存储结构。它被植入到大部分编程语言中。由于数组十分易懂,所以它被作为介绍数据结构的起点。 数组的特点:插入快、查找慢、删除慢、大小就固定。 虽然数组插入快,但是查找和删除都比较慢,并且大小固定,这就意味着数组可拓展性很差。所有数组一般不单独使用,数组只会在复杂算法的基础上使用。 增删改示例 Arrays.java public class Array...

huangpf_vcx 181

【OpenClaw企业级智能体实战】第04篇:OpenClaw成本优化实战——Token消耗降96%!claude-mem+OpenViking从入门到精通

OpenClaw作为企业级智能体框架,凭借强大的自动化能力成为企业数字化转型的热门工具,但原生机制导致的上下文冗余问题,让众多用户面临“Token消耗失控”的困境——单周账单数千元的案例屡见不鲜。本文基于阿里云实测数据与开源工具官方文档,先深度拆解OpenClaw成本黑洞的核心成因(记忆碎片化、Token指数级膨胀),再系统讲解两款核心优化工具(claude-mem单Agent记忆管理、OpenViking多Agent集群底座)的底层原理、算法架构与实现逻辑,提供从环境搭建、工具集成、参数调优到安全部署

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 703

猿创征文|Qt 文件和目录应用讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】

Qt 文件和目录精准讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】【QFileDialog】 第一章 QCoreApplication类 第一节 QCoreApplication常用函数方法 第二节 QCoreApplication举例 第二章 QFile类 第一节 静态函数方法 第二节 成员函数方法 第三章 QFileInfo类 第一节 常用函数方法 第四章 QDir类

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 941

数据结构与算法 二(数组)

这里写目录标题一、什么是数组?1.线性表2、非线性表二、数组怎么根据下标随机访问的1、为何数组插入和删除低效插入:删除:三、用数组还是容器 一、什么是数组? 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 1.线性表 线性表就是数据排成像一条线一样的结构。 常见的线性表结构:数组,链表、队列、栈等。 2、非线性表 数据之间并不是简单的前后关系。 如:二叉树、堆、图。 连续的内存空间和相同类型的数据 优点:两限制使得具有随机访问的特性 缺点:删除,插入数据效

暴走的皮皮虾博客 232

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数据结构与算法系列二:数组

数组(Array)是一种线性表数据结构,用一组连续的内存空间,来存储一组具有相同类型的数据。数组从0开始编号。 概念关键词 一是线性表,线性表的数据排列成一条线的结构。线性表上的数据最多只有前后两个方向,数组,链表,栈,队列等都是线性表结构。非线性表包括树,堆,图等,非线性表中数据不是简单的前后关系。 二是连续的内存空间和相同类似的数据。这两个限制使得数组可以“随机访问”;但也使得数组的插入、...

hiahia28的博客 294

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

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

数据结构与算法(二):数组与链表

数据结构与算法(二):数组与链表

qq_42994487的博客 803

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《数据结构与算法》实验二 栈、队列和数组

《数据结构与算法》实验练习二 栈、队列和数组

凪的博客 750

二、数据结构与算法 稀疏数组

1.稀疏算法的目的就是储存的时候,不用储存那么多,节省空间(时间换空间)。 稀疏数组:就是无效值(可以是规定值吧,相同的比较多)比较多,很稀疏,其实就是把原来的数组(这个数组有多个相同的值,这里是0,因为默认值为0,无值的情况默认0,不用设置值,而其他的值要设置值),通过规律来创建一个新的数组(值较少,且可以按一定规律还原为原数组),然后储存起来,然后。 思路如下: 原数组–》稀疏数组–》储存–》拿出来–》还原–》使用。 其中下面的表示原数组 下面的表示稀疏数组 代码(储存省略): public cl

sunweihao2019的博客 1302

数据结构与算法之美笔记梳理二 —— 数组

文章目录一、提出问题二、数组概述三、数组操作四、注意问题五、代码实现 一、提出问题 为什么数组要从0开始编号,而不是从1开始呢?从1开始不是更符合人类的思维习惯吗? 如何实现随机访问? 二、数组概述 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据 关键词理解 线性表 线性表就是数据排成像一条线一样的结构,每个线性表上的数据最多只有前和后两个方向,其实...

倩mys的博客 269

【数据结构与算法】二 数组反转 reverse

【数据结构与算法】二 reverse 反转前面我们提到了数组,现在我们就以数组来实现反转… 如我们定义一个数组int array[] = { 3 , 4 , 7 , 1 , 5 , 6 , 2 , 9};分析与思路反转无疑就是将数组下标第0个元素与下标最后一个元素互换,然后是第1个元素与倒数第2个元素的互换,依次类推…我们设想数组长度为基数或偶数都没有问题…我们需要一个方法,在方法中就做一件事情,

maguochao_Mark的博客 929

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

代写。,。。

caicaptain 239

大厂AI必备数据结构与算法——数组(二)详细文档

定义在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识arrayelementsorkey因为数组内的元素是连续存储知道了数组的数据起始地址 BaseAddressBaseAddress,就可以由公式 BaseAddress+i∗sizeBaseAddress+i∗size 计算出索引 ii 元素的地址ii 即索引,在 Java、C 等语言都是从 0 开始。

程序员-杨胡广的博客 1859

数据结构与算法(二)数组,栈与队列

文章目录数组数组地址的计算相关思考数组的越界问题数组为什么从0下标开始删除和插入的优化课后习题链表插入和删除操作课后习题栈栈的应用课后习题队列概念循环队列 数组 数组是一种线性表结构。用一块连续的内存空间来存储相同类型的一组数据。 线性表:存在唯一的开始和结束元素,并且除第一个元素没有前驱,最后一个元素没有后继,其余元素均存在唯一的前驱和后继 因为连续的存储空间使得数组的随机访问的时间复杂度为O(1),但插入和删除为了保证数据的连续性,就需要做大量的数据搬移工作,所以时间复杂度为O(n)。 数组地址的计

weixin_55858678的博客 509

数据结构与算法(二):稀疏数组

_橘猫学数据结构与算法         在学习和了解稀疏数组之前,让我们先通过一个实际的案例来打通关口。         五子棋这款小游戏,我想各位看官并不陌生,其实在编写五子棋程序时棋盘使用的就是我们最熟悉不过的的二维数组来实现的。其游戏规则就是同色号的棋子由五个连续不间断的排成一排就可以获胜。当然,我的主要目的不是来向大家来介绍这款小游戏的,而是

派大星的博客 442

JavaScript 数据结构与算法(二)数组

目录 JavaScript 数据结构与算法(二)数组 创建和初始化数组 数组常见操作 添加元素 删除元素 修改元素 JavaScript 数据结构与算法(二)数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。 数组通常情况下用于存储一系列同一种数据类型的值。 但在 JavaScript 里,数组中可以保存不同类型的值。但我们还是要遵守最佳实践,别这么做(大多数语言都没这个能力)。 创建和初始化数组 new Array() const daysOf...

qq_45738592的博客 131

数据结构与算法之美 | 学习笔记二 —— 数组

一、数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表:同样是线性表结构的数据结构例如链表、队列、栈等。非线性表的数据结构例如二叉树、堆、图等。 随机访问:因为存储为连续内存空间和相同类型的数据。但这造成删除、插入数据很低效,要做大量的数据搬移工作。 随机访问数组的寻址公式: a[i]_address = base_address + ...

跟一大桃一起学习 218

算法与数据结构【数据结构】——二、线性表:链表与数组

算法与数据结构【数据结构】——一、线性表:链表与数组 线性表是最简单的线性结构; 线性结构是一个数据元素的有序集; 一、线性结构与线性表 (1)线性结构的基本特征 唯一的“第一元素” 唯一的“最后元素” 除 最后元素 外,均有 唯一的后继 除 第一元素 外,均有 唯一的前驱 (2)线性表的类型定义 数据对象: D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0...

weixin_44194088的博客 334

数据结构与算法之美(二) 数组

一、定义 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 1、什么是线性表:数据排成一条线,每个线性表上的数据最多只有前后两个方向。数组、链表、队列、栈均为线性表结构。与之对应的非线性表结构包括:二叉树、堆、图等。 2、连续的内存空间+相同类型的数据,保证了数组具有“随机访问”的特性。 二、如何实现随机访问? 以一个长度为10的int型的数组int[] a = new int[10]为例,计算机给数组a分配了一块连续的内存空间1000~1039,其中

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值