成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數(shù)組與鏈表,性能到底差多少?

開發(fā) 前端
所謂數(shù)組,就是在內(nèi)存中連續(xù)存儲(chǔ)多個(gè)元素的結(jié)構(gòu),在內(nèi)存中的分配也是連續(xù)的。數(shù)組中的元素通過數(shù)組下標(biāo)進(jìn)行訪問,數(shù)組下標(biāo)從0開始。

 本文轉(zhuǎn)載自微信公眾號(hào)「活在信息時(shí)代」,作者活在信息時(shí)代。轉(zhuǎn)載本文請聯(lián)系活在信息時(shí)代公眾號(hào)。

同為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),數(shù)組與鏈表是最為常用的兩個(gè)大類之一。

所謂數(shù)組,就是在內(nèi)存中連續(xù)存儲(chǔ)多個(gè)元素的結(jié)構(gòu),在內(nèi)存中的分配也是連續(xù)的。數(shù)組中的元素通過數(shù)組下標(biāo)進(jìn)行訪問,數(shù)組下標(biāo)從0開始。

而鏈表是物理存儲(chǔ)單元上非連續(xù)的、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表的指針地址實(shí)現(xiàn),每個(gè)元素包含兩個(gè)結(jié)點(diǎn),一個(gè)是存儲(chǔ)元素的數(shù)據(jù)域 (內(nèi)存空間),另一個(gè)是指向下一個(gè)結(jié)點(diǎn)地址的指針域。

根據(jù)兩者的不同特點(diǎn),我們可以看到,對于數(shù)組而言,數(shù)據(jù)是可以直接訪問的,也就是說如果我想訪問排序?yàn)?的數(shù)據(jù),只需要眼看著訪問地址為6的內(nèi)存,就可以得到結(jié)果了。

而如果想訪問鏈表中排序?yàn)?的數(shù)據(jù),則需要從頭開始,查找到第六個(gè),才能獲取到結(jié)果。

而插入數(shù)據(jù)的話,在數(shù)組中插入一條數(shù)據(jù),則需要把插入之后的數(shù)據(jù)全部往后挪一遍。

而對于鏈表來說,插入一條數(shù)據(jù),只需要將要插入位置的鏈解開,將前一節(jié)的下一個(gè)指針指向插入的節(jié)點(diǎn),而將新節(jié)點(diǎn)的下一個(gè)指針指向原來的后一節(jié)就行了。非常簡單。

那么,兩者的效率空間會(huì)差多少呢?我們可以寫個(gè)代碼來驗(yàn)證一下。

我們知道,在Java中,ArrayList是基于數(shù)組實(shí)現(xiàn)的List,而LinkedList則是基于鏈表而實(shí)現(xiàn)的。那么,我們就可以寫一段代碼來測試一下他們的效率了。

插入代碼如下:

數(shù)組:

List<Integer> arrayList = new ArrayList<Integer>();
long start = System.currentTimeMillis();
for (int i = 0; i< index; i++) {
arrayList.add(0, i);
}
long end = System.currentTimeMillis();
System.out.println("數(shù)組插入耗時(shí): "+ (end - start));

鏈表:

Long start = System.currentTimeMillis();
List<Integer> linkedList = new LinkedList<Integer>();
for (int i =0; i< index; i ++) {
linkedList.add(0, i);
}
Long end = System.currentTimeMillis();
System.out.println("鏈表插入耗時(shí): "+ (end - start));

查詢代碼如下:

數(shù)組:

List<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i< index; i++) {
arrayList.add(i);
}
long start = System.currentTimeMillis();
for (int i : arrayList) {
int j = arrayList.get(i);
}
long end = System.currentTimeMillis();
System.out.println("數(shù)組查詢耗時(shí): "+ (end - start));

鏈表:

List<Integer> linkedList = new LinkedList<Integer>();
for (int i =0; i< index; i ++) {
linkedList.add(i);
}
Long start = System.currentTimeMillis();
for (int i : linkedList) {
linkedList.get(i);
}
Long end = System.currentTimeMillis();
System.out.println("鏈表查詢耗時(shí): "+ (end - start));

在將index設(shè)置為100000的情況下,結(jié)果如下:

可見差距還是很明顯的。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-07-27 14:24:38

MySQL數(shù)據(jù)庫SQL

2015-08-19 11:17:02

Windows 10DirectX 12

2016-10-21 10:36:54

http2spdynode.js

2023-07-12 15:32:49

人工智能AI

2011-06-08 15:51:33

臺(tái)式機(jī)評(píng)測

2023-12-28 10:39:57

數(shù)組節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

2012-06-06 10:01:04

服務(wù)器硬盤PC硬盤

2022-11-16 16:05:02

2013-01-18 09:25:48

微信移動(dòng)應(yīng)用YY

2019-03-05 14:29:34

RTX Max-Q顯卡3DMark

2015-02-04 10:20:45

云技術(shù)IT戰(zhàn)略應(yīng)用架構(gòu)模型

2025-03-10 11:48:10

人工智能AI軟件

2019-10-10 10:36:48

RedisQPSMySQL

2013-03-21 11:20:00

性能測試性能調(diào)優(yōu)測試

2019-09-19 14:47:12

人工智能AI

2020-02-07 11:07:53

數(shù)組鏈表單鏈表

2020-10-26 10:44:59

硬盤CPUCache

2025-02-10 00:20:00

2019-08-14 10:20:32

算法數(shù)組鏈表

2024-04-17 08:35:04

Lua腳本Redis數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品中文在线 | 国内精品成人 | 日韩精品一区二区三区视频播放 | 国产精品久久国产精品 | 久久一二区 | 精品国产免费一区二区三区演员表 | 亚洲 欧美 另类 综合 偷拍 | 性高湖久久久久久久久 | 国产精品99久久久久久www | 国产成人精品视频在线观看 | 在线欧美激情 | 欧美日韩久久 | 国产精品视频免费观看 | 区一区二在线观看 | 欧美操操操 | 欧美精品乱码99久久影院 | 夜夜精品浪潮av一区二区三区 | 亚洲一区免费视频 | 国产做a爱片久久毛片 | 国产精品久久久久久久久久久久久 | 国产91一区 | 午夜a√| 国产激情精品视频 | 久久骚 | 欧美日韩视频在线第一区 | 国产精品久久二区 | 欧美成人免费在线 | 国产一级一级 | 国产精品一区二区三区在线 | 少妇无套高潮一二三区 | 91中文字幕 | 国产一区二区三区在线视频 | 羞羞视频在线观看网站 | 久久久av | 久久出精品 | 午夜精品久久久久久久久久久久 | 欧美日韩在线成人 | 国产日韩欧美在线观看 | 精品国产乱码久久久久久牛牛 | 欧美激情亚洲 | 九九激情视频 |