一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种动态数组操作方法及相关装置与流程

2021-10-24 05:01:00 来源:中国专利 TAG:数组 计算机 动态 操作方法 装置


1.本技术涉及计算机技术领域,特别涉及一种动态数组操作方法、动态数组操作装置、计算设备以及计算机可读存储介质。


背景技术:

2.在计算机技术中,动态数组:数组是一种顺序存储的线性表,所有元素的内存地址都是连续的,数组有静态数组和动态数组两种。在很多语言中,都只有静态数组,没有动态数组。静态数组有一个致命的缺陷,无法动态修改容量,实际开发中我们希望数组的容量是动态变化的。容量可以动态变化的数组称为动态数组。
3.相关技术中,在以往的动态数组结构中,如果对动态数组加入元素或删除元素需要遍历数组中的所有元素,对动态数组中的所有元素做位移的操作来达到目的。但是遍历动态数组中的所有元素,比较耗时,会将操作动态数组的时间复杂度达到o(n),降低动态数组的操作效率,增加时延。
4.因此,如何提高动态数组中对数组数据进行操作的效率是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种动态数组操作方法、动态数组操作装置、计算设备以及计算机可读存储介质,以解决动态数组操作效率较低的问题。
6.为解决上述技术问题,本技术提供一种动态数组操作方法,包括:
7.接收数组操作请求;
8.判断所述数据操作请求的目标操作位置之前的元素数量是否小于所述目标操作位置之后的元素数量;
9.若是,则移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求;其中,所述头指针为表示所述动态数组的头节点地址的指针。
10.可选的,移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求,包括:
11.当所述数组操作请求为头位置添加元素请求时,向前移动所述动态数组的头指针;
12.将所述头位置添加元素请求中的元素添加至所述动态数组的对应位置。
13.可选的,移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求,包括:
14.当所述数组操作请求为头位置删除元素请求时,根据所述头位置删除元素请求将所述动态数组中的元素删除,并向后移动所述动态数组的头指针。
15.可选的,移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操
作位置之前的元素,并执行所述数组操作请求,包括:
16.当所述数组操作请求为中间位置插入元素请求时,且所述目标操作位置之前的元素数量小于所述目标操作位置之后的元素数量时,向前移动所述动态数组的头指针和所述目标操作位置之前的元素;
17.将所述中间位置插入元素请求的元素插入所述目标操作位置。
18.可选的,移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求,包括:
19.当所述数组操作请求为中间位置删除元素请求时,且所述目标操作位置之前的元素数量小于所述目标操作位置之后的元素数量时,删除所述目标操作位置的元素,并向后移动所述动态数组的头指针和所述目标操作位置之前的元素。
20.可选的,所述头指针包括所述头节点地址、所述动态数组的元素个数以及所述动态数组的总长度。
21.可选的,还包括:
22.当初始化所述动态数组时,对所述头指针加入头节点地址、元素个数以及总长度,并将所述头指针指向所述动态数组的头节点。
23.本技术还提供一种动态数组操作装置,包括:
24.请求接收模块,用于接收数组操作请求;
25.元素判断模块,用于判断所述数据操作请求的目标操作位置之前的元素数量是否小于所述目标操作位置之后的元素数量;
26.数组操作模块,用于当所述目标操作位置之前的元素数量小于所述目标操作位置之后的元素数量时,移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求;其中,所述头指针为表示所述动态数组的头节点地址的指针。
27.本技术还提供一种计算设备,包括:
28.存储器,用于存储计算机程序;
29.处理器,用于执行所述计算机程序时实现如上所述的动态数组操作方法的步骤。
30.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的动态数组操作方法的步骤。
31.本技术所提供的一种动态数组操作方法,包括:接收数组操作请求;判断所述数据操作请求的目标操作位置之前的元素数量是否小于所述目标操作位置之后的元素数量;若是,则移动所述动态数组的头指针或移动所述动态数组的头指针和所述目标操作位置之前的元素,并执行所述数组操作请求;其中,所述头指针为表示所述动态数组的头节点地址的指针。
32.通过在操作动态数组时,采用移动该动态数组的头指针的方式,实现对目标操作位置之前的元素进行移动,进而对动态数组进行操作,而不是仅仅只能对动态数组中目标操作位置之后的元素进行移动,降低了对动态数组操作时移动元素的数量,进而提高动态数组的操作效率,降低时延。
33.本技术还提供一种动态数组操作装置、计算设备以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
34.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
35.图1为本技术实施例所提供的一种动态数组操作方法的流程图;
36.图2为本技术实施例所提供的第一种动态数组操作的示意图;
37.图3为本技术实施例所提供的第二种动态数组操作的示意图;
38.图4为本技术实施例所提供的第三种动态数组操作的示意图;
39.图5为本技术实施例所提供的第四种动态数组操作的示意图;
40.图6为本技术实施例所提供的一种动态数组操作装置的结构示意图。
具体实施方式
41.本技术的核心是提供一种动态数组操作方法、动态数组操作装置、计算设备以及计算机可读存储介质,以解决动态数组操作效率较低的问题。
42.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.相关技术中,在以往的动态数组结构中,如果对动态数组加入元素或删除元素需要遍历数组中的所有元素,对动态数组中的所有元素做位移的操作来达到目的。但是遍历动态数组中的所有元素,比较耗时,会将操作动态数组的时间复杂度达到o(n),降低动态数组的操作效率,增加时延。
44.因此,本技术提供一种动态数组操作方法,通过在操作动态数组时,采用移动该动态数组的头指针的方式,实现对目标操作位置之前的元素进行移动,进而对动态数组进行操作,而不是仅仅只能对动态数组中目标操作位置之后的元素进行移动,降低了对动态数组操作时移动元素的数量,进而提高动态数组的操作效率,降低时延。
45.以下通过一个实施例,对本技术提供的一种动态数组操作方法进行说明。
46.请参考图1,图1为本技术实施例所提供的一种动态数组操作方法的流程图。
47.本实施例中,该方法可以包括:
48.s101,接收数组操作请求;
49.本步骤旨在接收数组操作请求。其中,该数组操作请求主要是数组操作方发送的操作请求。
50.其中,数组操作请求主要对动态数组进行操作的请求。其中,包括但不限于对动态数组插入元

和从动态数组中删除元素。更具体的,根据操作元素位置的不同,该数组操作请求包括头位置添加元素请求、头位置删除元素请求、中间位置插入元素请求以及中间位置删除元素请求。
51.进一步的,本实施例还可以包括:
52.当初始化动态数组时,对头指针加入头节点地址、元素个数以及总长度,并将头指
针指向动态数组的头节点。
53.可见,本实施例中还可以包括对动态数组进行初始化,以便在头指针中加入头节点地址、元素个数以及总长度,并将头指针指向该动态数组的头节点,也就是该动态数组的第一个元素。使得可以通过头指针确定该动态数组的头节点,其中的元素个数或者该动态数组的总长度。
54.s102,判断数据操作请求的目标操作位置之前的元素数量是否小于目标操作位置之后的元素数量;
55.在s101的基础上,本步骤旨在判断数据操作请求的目标操作位置之前的元素数量是否小于目标操作位置之后的元素数量。
56.也就是,判断目标操作位置之前的需要移动元素的数量是否小于该目标操作位置之后的元素数量。即判断移动之前的元素需要耗费的资源数量是否小于移动之后的元素需要耗费的资源。
57.s103,若是,则移动动态数组的头指针或移动动态数组的头指针和目标操作位置之前的元素,并执行数组操作请求;其中,头指针为表示动态数组的头节点地址的指针。
58.在s102的基础上,本步骤旨在当目标操作位置之前的元素数量小于目标操作位置之后的元素数量时,移动动态数组的头指针或移动动态数组的头指针和目标操作位置之前的元素,并执行数组操作请求。
59.由于该数组操作请求可以是操作第一个元素或中间的元素。因此,该目标操作位置之前的可以不存在元素,也可以存在元素。因此,本步骤中可以是仅移动头指针。也可以是移动头指针和该目标操作位置之前的元素,最后并执行该数组操作请求。
60.其中,头指针为表示动态数组的头节点地址的指针。
61.进一步的,该头指针包括头节点地址、动态数组的元素个数以及动态数组的总长度。
62.可见,本可选方案中的头指针可以包括头节点地址、动态数组的元素个数以及动态数组的总长度。
63.进一步的,本步骤可以包括:
64.步骤1,当数组操作请求为头位置添加元素请求时,向前移动动态数组的头指针;
65.步骤2,将头位置添加元素请求中的元素添加至动态数组的对应位置。
66.可见,本可选方案中主要是对如何进行数组操作进行说明。本可选方案中,当数组操作请求为头位置添加元素请求时,向前移动动态数组的头指针;将头位置添加元素请求中的元素添加至动态数组的对应位置。
67.进一步的,本步骤可以包括:
68.当数组操作请求为头位置删除元素请求时,根据头位置删除元素请求将动态数组中的元素删除,并向后移动动态数组的头指针。
69.可见,本可选方案中主要是对如何进行数组操作进行说明。本可选方案中,当数组操作请求为头位置删除元素请求时,根据头位置删除元素请求将动态数组中的元素删除,并向后移动动态数组的头指针。
70.进一步的,本步骤可以包括:
71.步骤1,当数组操作请求为中间位置插入元素请求时,且目标操作位置之前的元素
数量小于目标操作位置之后的元素数量时,向前移动动态数组的头指针和目标操作位置之前的元素;
72.步骤2,将中间位置插入元素请求的元素插入目标操作位置。
73.可见,本可选方案中主要是对如何进行数组操作进行说明。本可选方案中,数组操作请求为中间位置插入元素请求时,且目标操作位置之前的元素数量小于目标操作位置之后的元素数量时,向前移动动态数组的头指针和目标操作位置之前的元素,将中间位置插入元素请求的元素插入目标操作位置。
74.进一步的,本步骤可以包括:
75.当数组操作请求为中间位置删除元素请求时,且目标操作位置之前的元素数量小于目标操作位置之后的元素数量时,删除目标操作位置的元素,并向后移动动态数组的头指针和目标操作位置之前的元素。
76.可见,本可选方案中主要是对如何进行数组操作进行说明。本可选方案中,当数组操作请求为中间位置删除元素请求时,且目标操作位置之前的元素数量小于目标操作位置之后的元素数量时,删除目标操作位置的元素,并向后移动动态数组的头指针和目标操作位置之前的元素。
77.综上,本实施例通过在操作动态数组时,采用移动该动态数组的头指针的方式,实现对目标操作位置之前的元素进行移动,进而对动态数组进行操作,而不是仅仅只能对动态数组中目标操作位置之后的元素进行移动,降低了对动态数组操作时移动元素的数量,进而提高动态数组的操作效率,降低时延。
78.以下通过一个具体的实施例,对本技术提供的一种动态数组操作方法做进一步说明。
79.请参考图2,图2为本技术实施例所提供的第一种动态数组操作的示意图。
80.本实施例中,当往数组的头位置添加元素时,也就是往数组的第0个位置添加第8个元素e7。
81.在现有技术的动态数组中,需要遍历第0个位置之后的所有元素,把这些元素都往后面移动一位,时间复杂度是o(n)。
82.本实施例中则更加简单,只需把头指针往前挪动一位,把e7元素添加到e0的前面,即可实现元素添加,时间复杂度是o(1)。
83.请参考图3,图3为本技术实施例所提供的第二种动态数组操作的示意图。
84.本实施例中,当往数组的头位置删除元素时,也就是往数组的第0个位置的元素也就是e0给删掉。
85.相关技术中,动态数组中需要遍历第0个元素之后的所有元素,把它们往前挪一位,时间复杂度是o(n)。
86.而在本实施例中只需要把头指针往后移动一位,就可以了,时间复杂度是o(1)。
87.请参考图4,图4为本技术实施例所提供的第三种动态数组操作的示意图。
88.本实施例中,当往数组的中间插入一个元素时,也就是往数组的e2和e3之间添加元素e7。
89.在相关技术中,动态数组中需要把e3及后面的元素遍历一遍,全都往后面移动一位,然后在空出来的位置放入e7。
90.在本实施例中,会先判断e2之前的元素个数和e3之后的元素个数,对比哪边的元素个数更少,取少的那个方向做操作。比如图中e2之前只有e0和e1,个数为3个,而e3之后有e4~e6,个数为4个,所以会对e0,e1,e2做操作,把他们往前挪动一位,头指针也要往前挪动一位,再插入新元素。
91.请参考图5,图5为本技术实施例所提供的第四种动态数组操作的示意图。
92.本实施例中,当往数组的中间删除一个元素时,比如删除数组中的元素e2。
93.在相关技术中,需要把e2及后面的元素遍历一遍,全都往前挪动一位,时间复杂度为o(n)。
94.在本实施例中,会先判断e2之前的元素个数和e2之后的元素个数,对比哪边的元素个数更少,取少的那个方向做操作。比如图中e2之前只有e0和e1,个数为2个,而e2之后有e3~e6,个数为4个,所以会对e0,e1做操作,把他们往后挪动一位,头指针也要往后挪动一位。
95.可见,本实施例可以通过在操作动态数组时,采用移动该动态数组的头指针的方式,实现对目标操作位置之前的元素进行移动,进而对动态数组进行操作,而不是仅仅只能对动态数组中目标操作位置之后的元素进行移动,降低了对动态数组操作时移动元素的数量,进而提高动态数组的操作效率,降低时延。
96.下面对本技术实施例提供的动态数组操作装置进行介绍,下文描述的动态数组操作装置与上文描述的动态数组操作方法可相互对应参照。
97.请参考图6,图6为本技术实施例所提供的一种动态数组操作装置的结构示意图。
98.本实施例中,该装置可以包括:
99.请求接收模块100,用于接收数组操作请求;
100.元素判断模块200,用于判断数据操作请求的目标操作位置之前的元素数量是否小于目标操作位置之后的元素数量;
101.数组操作模块300,用于当目标操作位置之前的元素数量小于目标操作位置之后的元素数量时,移动动态数组的头指针或移动动态数组的头指针和目标操作位置之前的元素,并执行数组操作请求;其中,头指针为表示动态数组的头节点地址的指针。
102.本技术实施例还提供一种计算设备,包括:
103.存储器,用于存储计算机程序;
104.处理器,用于执行所述计算机程序时实现如上所述的动态数组操作方法的步骤。
105.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的动态数组操作方法的步骤。
106.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
107.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
108.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
109.以上对本技术所提供的一种动态数组操作方法、动态数组操作装置、计算设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜