【算法集训之线性表篇】Day 05

news/2025/3/16 6:09:06/

文章目录

  • 题目一
  • 思路
  • 代码实现
  • 效果
  • 题目二
  • 思路
  • 代码实现
  • 效果

题目一

将两个有序顺序表合并为一个有序顺序表,函数结果返回值为顺序表。

思路

  1. 我们可以利用二路归并排序算法中的Merge函数思路,设置两个指针i,j,分别记录在顺序表a和b中的访问位置,再利用直接插入排序算法思想,将比较后的元素值插入顺序表中。时间复杂度为O(n),空间复杂度为O(n)。

代码实现

Array LinearList::Question_07()
{Array arr1,arr2;arr1.length = 5;cout<<"insert 5 nums to arr1:"<<endl;for(int i = 0;i < arr1.length;i ++){cin >> arr1.data[i];}arr2.length = 5;cout<<"insert 5 nums to arr2:"<<endl;for(int i = 0;i < arr2.length;i ++){cin >> arr2.data[i];}int i = 0,j = 0,k = 0;arr.length = arr1.length + arr2.length;while(i < arr1.length || j < arr2.length){if(arr1.data[i] <= arr2.data[j] && i < arr1.length && j < arr2.length){arr.data[k++] = arr1.data[i++];}else if(arr1.data[i] > arr2.data[j] && i < arr1.length && j < arr2.length){arr.data[k++] = arr2.data[j++];}else if(j >= arr1.length-1){arr.data[k++] = arr1.data[i++];}else if(i >= arr2.length-1){arr.data[k++] = arr2.data[j++];}}return arr;
}

效果

在这里插入图片描述

题目二

已知一个一维数组A[m+n]中一次存放两个线性表{a1,a2,a3…am}和{b1,b2,b3,…,bn},编写一个函数,将数组中两个顺序表的位置互换,即将{b1,b2,b3,…,bn}放到{a1,a2,a3…am}之前。

思路

  1. 先将数组A[m+n]中的元素逆置,得到{bm,bm-1,…,b1,an,an-1,…,a1}。再分别对两个顺序表进行元素逆置,即可得到{b1,b2,…,bm-1,bm,a1,a2,…,an-1,an},完成题目要求。时间复杂度为O(n),空间复杂度为O(1)。

代码实现

//逆置函数,将指针位置的数组元素逆置
Array LinearList::Reverse(int left,int right)
{if(arr.length <= 1)return arr;int i = left,j = right-1;int temp = 0;while(i < j){temp = arr.data[i];arr.data[i++] = arr.data[j];arr.data[j--] = temp;temp = 0;}return arr;
}Array LinearList::Question_08()
{Array arr1,arr2;arr1.length = 5;cout<<"insert 5 nums to arr1:"<<endl;for(int i = 0;i < arr1.length;i ++){cin >> arr1.data[i];}arr2.length = 6;cout<<"insert 6 nums to arr2:"<<endl;for(int i = 0;i < arr2.length;i ++){cin >> arr2.data[i];}arr.length = arr1.length + arr2.length;for(int i = 0;i < arr.length;i ++){if(i < arr1.length)arr.data[i] = arr1.data[i];elsearr.data[i] = arr2.data[i-arr1.length];}PrintLinearList();/* 以上代码均为预处理代码,跟算法逻辑无关 */arr = Reverse(0,arr.length);//逆置arr数组PrintLinearList();arr = Reverse(0,arr2.length);//逆置顺序表arr1PrintLinearList();arr = Reverse(arr2.length,arr.length);//逆置顺序表arr2return arr;
}

效果

在这里插入图片描述


http://www.ppmy.cn/news/789084.html

相关文章

基于matlab使用PointNet深度学习进行点云分类(附源码)

一、前言 此示例演示如何训练 PointNet 网络以进行点云分类。 点云数据由各种传感器获取&#xff0c;例如激光雷达、雷达和深度摄像头。这些传感器捕获场景中物体的3D位置信息&#xff0c;这对于自动驾驶和增强现实中的许多应用非常有用。例如&#xff0c;区分车辆和行人对于…

maxwell生成动态磁力线/磁密云图一些报错警告解决办法

之前看到一个动态变化的磁密云图以及磁力线动图&#xff0c;如图1、2所示&#xff0c;觉得很好玩。 图1 动态磁密云图 图2 动态磁力线图 这个可以在Maxwell软件直接获取&#xff0c;步骤如下&#xff1a; 首先在电机瞬态仿真的时候设置Solve setup的时候注意save fileds一栏…

【超详细】磁力计数据读取--以IST8310为例

这里以iSentek公司产出的IST8310型号的磁力计为例&#xff0c;尺寸为 3.0 * 3.0 * 1.0mm&#xff0c;支持快速 I2C 通信&#xff0c;可达 400kHz&#xff0c;14 位磁场数据&#xff0c;测量范围可达1600uT(x,y-axis)和 2500uT(z-axis)&#xff0c; 最高 200Hz 输出频率 同时这里…

Python简单爬取电影磁力链接

Python简单爬取电影磁力链接 网页的链接&#xff1a;http://www.ygdy8.net/html/gndy/dyzz/list_23_2.html 打开你想要的电影&#xff1a;http://www.ygdy8.net/html/gndy/dyzz/20181124/57807.html 找到下载地址&#xff1a; 代码&#xff1a; import requests#网络请求模块…

[初学Python]利用某网站的功能写一个磁力链转种子工具

孔子曰&#xff1a;学而时习之~ 初学python&#xff0c;一边看语法&#xff0c;一边看参考例程&#xff0c;写了一个小程序&#xff0c;做个存档&#xff0c;否则很容易忘记。 这次的目标是利用某种子下载网站&#xff0c;编写一个磁力链下载种子文件的工具。 常见的种子文件…

磁力块(分块)

题目链接 输入格式 第一行五个整数 x 0 , y 0 , p L , r L , N x_0,y_0,p_L,r_L,N x0​,y0​,pL​,rL​,N&#xff0c;表示小取酒所在的位置&#xff0c;磁石 L L L 磁力、吸引半径和原野上散落磁石的个数。 接下来 N N N 行每行五个整数 x , y , m , p , r x,y,m,p,r x,…

海洋磁力数据处理步骤

​ &#xff08;此照片乃航次获奖照片&#xff09; 前面几个章节介绍了地磁基本知识&#xff0c;由于项目紧急&#xff0c;只能边学习理论&#xff0c; 边处理。经过2个月的努力&#xff0c;基本上掌握了海洋重磁处理的基本方法。 目前&#xff0c;专项的重磁处理都是各单位自己…

磁力链接做成rar文件后怎么打开

要打开 RAR 文件&#xff0c;首先需要安装一个 RAR 解压缩软件。 Windows 系统自带的资源管理器不能直接解压 RAR 文件&#xff0c;所以需要使用第三方软件。 常用的 RAR 解压缩软件有&#xff1a; WinRAR(收费)7-Zip(免费) 安装完解压缩软件之后&#xff0c;打开 RAR 文件可以…