小白資料結構學習 陣列為何從0開始

2021-10-04 13:27:48 字數 536 閱讀 8598

先說結論:

陣列從零開始是為了使運算更快!

陣列屬於線性表,陣列的特點就是連續,這個特點會使得它按下標進行查詢的時候速度非常快,時間複雜度只有o(1)。

陣列按照下標進行查詢的時候,會在原位置加上下標個值,到達下標位置的位址,快速提取陣列的值:

a[k]_address = base_address + k * type_size
a[k]_address = base_address +

(k-1

)*type_size

系統cpu就需要多做一次減的操作,影響執行效率。

作為最基礎的資料結構,很多底層的東西需要使用它來進行優化效能,所以為了最好的執行效率,陣列從0開始計數。

陣列連續就會使得陣列需要刪減元素的時候,可能需要的時間複雜度會達到o(n),刪除插入都是比較低效的。

容器各方面功能都強於陣列,但陣列在底層需要執行速度至上的操作裡是優於容器的,所以如果涉及到底層優化之類,還是無法代替的。

小白資料結構學習 鍊錶

鍊錶 使用指標將零散的記憶體塊鏈結起來使用,形成鍊錶,鍊錶包括稱為記憶體塊的結點和指向下乙個記憶體塊位址的後繼指標 next 鍊錶分為單鏈表,迴圈鍊錶,雙向鍊錶以及雙向迴圈鍊錶。單鏈表的表尾指標指向null,只擁有next指標指向下乙個記憶體塊。迴圈鍊錶在單鏈表的基礎上將尾指標指向頭結點。雙向鍊錶擁...

資料結構學習

什麼是資料結構 對計算機記憶體中的資料的一種安排。資料結構有那些?優缺點?1.陣列 插入快 知道下標 查詢慢,刪除慢,大小固定 2.有序陣列 比無序的查詢塊,刪除和插入慢,大小固定 3.棧 吃多了吐 個人理解 4.佇列 吃多了拉 個人理解 5.鍊錶 插入快,刪除快,查詢慢 6.二叉樹 查詢 插入 刪...

資料結構學習

鍊錶 class listnode definit self,x self.val x 節點值 self.next none 後繼節點值 例項化節點 n1 listnode 4 節點head n2 listnode 5 n3 listnode 1 構建引用指向 n1.next n2 n2.next ...