日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法学习笔记之 从0编号的数组

發布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法学习笔记之 从0编号的数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構與算法學習筆記之 從0編號的數組

前言

數組看似簡單,但掌握精髓的卻沒有多少;他既是編程語言中的數據類型,又是最基礎的數據結構;

一個小問題:

 為什么數據要從0開始編號,而不是 從1開始呢?

正文

帶著問題進入學習

如何實現隨機訪問?

什么是數組?

數組(array)是一種線性表數據結構,它用一組連續的內存空間來儲存一組具有相同類型的數據。

我們從定義來分析:

?

線性表:

是數據排成像一條線一樣的結構。每個線性表上的數據最多有前后兩個方向。諸如數組,鏈表,隊列,棧等都是線性表結構。

?

連續的內存空間和相同類型的數據:

這個特性是數組“隨機訪問”速度飛快的緣由,這也導致了從數組中刪除、插入數據,為了保證連續性,需要大量的工作量

?

計算機會給每個內存單元分配一個地址,計算機通過地址來訪問內存中的數據。

當計算機隨機訪問數組中的某個元素時,它會首先通過下面的尋址公式,計算出該元素的內存地址:

a[i]_address?=?base_address?+?i?*?data_type_size

data_type_siza表示數組中的每一個元素的大小。如果是int類型的數據,data_type_size為4個字節;

數組和鏈表的區別

鏈表適合插入、刪除,時間復雜度為O(1),數組適合查找,但是這里要注意一下,時間復雜度并不是O(1),即便是排好序的數組,你用二分法查找,時間復雜度也是O(logn),

正確的描述為:數組支持隨機訪問,根據下標隨機訪問的時間復雜度為O(1)

?

低效的“插入”“刪除”

插入操作

假設數組的長度為 n,現在,如果我們需要將一個數據插入到數組中的第 k 個位置,為了把第 k 個位置騰出來,給新來的數據,我們需要將第 k~n 這部分的元素都順序地往后挪一位,下面我們分析一下時間復雜度

如果在數組的末尾插入元素,那就不需要移動數據了,這時的時間復雜度為 O(1),但如果在數組的開頭插入元素,那所有的數據都需要依次往后移動一位,所以最壞時間復雜度是 O(n),因為我們在每個位置插入元素的概率是一樣的,所以平均情況時間復雜度為 (1+2+…n)/n=O(n)

如果數組中的數據是有序的,我們在某個位置插入一個新的元素時,就必須按照剛才的方法搬移 k 之后的數據,如果數組中存儲的數據并沒有任何規律,數組只是被當作一個存儲數據的集合。在這種情況下,如果要將某個數組插入到第 k 個位置

為了避免大規模的數據搬移,我們還有一個簡單的辦法就是

直接將第 k 位的數據搬移到數組元素的最后,把新的元素直接放入第 k 個位置。

?

刪除操作

和插入類似,

如果刪除數組末尾的數據,最好情況時間復雜度為 O(1);

如果刪除開頭的數據,則最壞情況時間復雜度為 O(n);

平均情況時間復雜度也為 O(n)

?

提高效率:

將多次刪除操作中集中在一起執行,可以先記錄已經刪除的數據,但是不進行數據遷移,而僅僅是記錄,當發現沒有更多空間存儲時,再執行真正的刪除操作。這也是 JVM 標記清除垃圾回收算法的核心思想。

?

數組訪問越界問題

C語言中的數據越界是一種未決行為,一般比較難發現的邏輯錯誤。相比之下,Java會有越界檢查。

?

用數組還是容器?

數組先指定了空間大小,容器如ArrayList可以動態擴容。

1.希望存儲基本類型數據,可以用數組

2.事先知道數據大小,并且操作簡單,可以用數組
3.直觀表示多維,可以用數組
4.業務開發,使用容器足夠,開發框架,追求性能,首先數組。

?

為什么數組要從 0 開始編號?

由于數組是通過尋址公式,計算出該元素存儲的內存地址:
a[i]_address = base_address + i * data_type_size
如果數組是從 1 開始計數,那么就會變成:
a[i]_address = base_address + (i-1)* data_type_size

?

以上內容為個人的學習筆記,僅作為學習交流之用。

?

歡迎大家關注公眾號,不定時干貨,只做有價值的輸出

作者:Dawnzhang?
出處:https://www.cnblogs.com/clwydjgs/p/9755971.html


版權:本文版權歸作者
轉載:歡迎轉載,但未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任

小舟從此逝,江海寄余生。 --狐貍


轉載于:https://blog.51cto.com/13681587/2307407

總結

以上是生活随笔為你收集整理的数据结构与算法学习笔记之 从0编号的数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品一卡 | 狠狠躁夜夜 | 亚洲天堂爱爱 | 伊人国产女| 欧美人与禽zoz0性3d | 久久精品高清 | 欧美久久影院 | 男人天堂久久 | www视频免费在线观看 | 超碰成人久久 | 亚洲天堂网址 | 女人特黄大aaaaaa大片 | 人人操日日干 | 亚洲精品视频一区二区 | 男女一级片 | 俄罗斯精品一区二区三区 | 精精国产xxxx视频在线播放 | 亚洲无码精品在线播放 | www.嫩草.com | 美女黄视频大全 | 国产高清欧美 | 麻豆tv在线观看 | 91入囗| 在线超碰av| 日本一区二区三区视频在线观看 | 91精品小视频 | 黄色三级视频网站 | 一本大道东京热无码 | 99热只有这里有精品 | 欧美三级在线看 | 日韩在线视频在线 | 欧美一级片免费在线观看 | 狠狠操2019| 91国内产香蕉 | 中文字字幕一区二区三区四区五区 | 中国黄色一级视频 | 国产视频在线观看视频 | 日韩久久中文字幕 | 性福宝av| 国产一区不卡 | 国产精品久久久一区二区 | 在线观看国产一区二区三区 | 18禁裸男晨勃露j毛免费观看 | 国产精品成人va在线观看 | 催眠调教艳妇成肉便小说 | 国产精品网站免费 | 亚洲综合激情另类小说区 | 日韩精品系列 | 亚洲av无码国产精品久久不卡 | 日韩avv| 黄色片在线播放 | 黄色片视频 | 久久精品人人爽 | 日韩精品二区在线观看 | 日本精品黄色 | 日韩视频在线视频 | 欧美手机在线 | 国产又粗又猛又爽又 | 胸网站 | 中出亚洲 | 中文字幕女优 | 国产精品国产三级国产aⅴ中文 | 一区二区国产视频 | 亚洲第一页乱 | 麻豆av一区二区三区 | 亚洲草逼| 成在线人免费视频 | 国产精品无码一区二区三区在线看 | 91久久精品一区二区 | 麻豆视频免费在线观看 | 中文字幕乱码一区二区 | 国产视频一区二区三 | 久久九精品 | 欧美一级性| 一级性毛片| 免费人成在线 | 欧美精品在线播放 | 国产福利在线观看 | 精品一区二区三区入口 | 两个小y头稚嫩紧窄h文 | 国产探花一区二区三区 | 日韩城人免费 | 免费观看在线播放 | 美女在线网站 | 综合五月婷婷 | 91亚洲精品久久久蜜桃 | 免费无遮挡网站 | 国产一区视频网站 | av最新地址| 污视频网址在线观看 | 国产精品国产三级国产普通话对白 | v片在线免费观看 | 国产夜色精品一区二区av | 青青在线播放 | 奶罩不戴乳罩邻居hd播放 | 日韩在线精品强乱中文字幕 | 精品啪啪 | 伊人综合影院 | 亚洲一区二区三区在线免费观看 |