自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)結(jié)構(gòu)與集合的不解之緣,你了解多少?

開發(fā) 前端
本文介紹了三種常用的數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表和紅黑樹,以及這些數(shù)據(jù)結(jié)構(gòu)在計算機中的重要意義。通過學(xué)習(xí)這些內(nèi)容,我們可以逐步深入了解計算機世界。

本篇文章將簡要介紹數(shù)據(jù)結(jié)構(gòu),讓讀者了解它們在計算機中以何種結(jié)構(gòu)方式存在。那么,什么是數(shù)據(jù)結(jié)構(gòu)呢?下面我們來詳細解釋。

數(shù)據(jù)結(jié)構(gòu)

1.1 數(shù)據(jù)結(jié)構(gòu)有什么用?

數(shù)據(jù)結(jié)構(gòu)是計算機存儲、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率。


數(shù)據(jù)結(jié)構(gòu)往往同高效的檢索算法和索引技術(shù)有關(guān)。這句話是啥意思呢?

我們舉個簡單的例子。就像金庸小說中所寫的,武功招式就相當于我們的算法,而數(shù)據(jù)結(jié)構(gòu)就是我們的內(nèi)功心法;而武功的高低,不僅僅是武功招式,更重要的是 學(xué)會的內(nèi)功心法。就比如張無忌在學(xué)會九陽神功之后,就可以大戰(zhàn)六大門派。

而數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),也會讓我們事半功倍。憑借著“數(shù)據(jù)結(jié)構(gòu)+算法=程序”這句話,Pascal之父獲得了圖靈獎。

總結(jié)來說:

數(shù)據(jù)結(jié)構(gòu)就是一種是將世界上各種數(shù)據(jù)轉(zhuǎn)化為計算機可以存儲和操作的形式,定義了邏輯結(jié)構(gòu)如何在計算機上存儲,以及相關(guān)的基本操作。

算法是程序猿通過調(diào)用不同數(shù)據(jù)結(jié)構(gòu)的基本操作,從而實現(xiàn)了數(shù)據(jù)的處理。

而這兩點使我們作為程序開發(fā)人員的必備基本功,不是一朝一夕就能成為絕世高手的,我們需要一步步去不斷的學(xué)習(xí)積累,積硅步以致千里。

1.2 常見的數(shù)據(jù)結(jié)構(gòu)

在計算機學(xué)科中,數(shù)據(jù)結(jié)構(gòu)是一門很重要的基礎(chǔ)學(xué)科,知識點很多。在這里我們不講那么多,只講述我們集合中用到的幾種數(shù)據(jù)結(jié)構(gòu),同學(xué)們可以下去自行學(xué)習(xí)更多的數(shù)據(jù)結(jié)構(gòu)的知識。常用結(jié)構(gòu)三個:數(shù)組、鏈表、紅黑樹。

我們分別來了解一下:

1)數(shù)組

數(shù)組的定義:

  • 數(shù)組是相同類型數(shù)據(jù)的有序集合;
  • 數(shù)組描述的是相同類型的若干個數(shù)據(jù),按照一定的先后次序排列組合而成;
  • 其中,每一個數(shù)據(jù)稱作一個數(shù)組元素,每個數(shù)組元素可以通過一個下標來訪問它們。

存儲思路:

所有數(shù)據(jù)存儲在連續(xù)的空間中,數(shù)組中的每個元素都是一個具體的數(shù)據(jù)。

數(shù)組的特點:

  • 使用連續(xù)分配的內(nèi)存空間;
  • 一次申請一大段連續(xù)的空間,需要事先聲明最大可能要占的固定內(nèi)存空間。

如下圖:


  • 通過索引,查詢快
  • 當給數(shù)組插入新元素時,數(shù)組中的a2,a3,a4整體后移,代價高。
  • 如果插入元素時,數(shù)組長度,還要重新創(chuàng)建一個數(shù)組,然后循環(huán)賦值,代價高

優(yōu)點:

設(shè)計簡單,讀取與修改表中的任意一個元素的時間都是固定的,速度快 。

缺點:

容易造成內(nèi)存浪費;刪除或者插入數(shù)據(jù)需要移動大量數(shù)據(jù),速度慢。

2)鏈表

每個數(shù)據(jù)單獨存在一小塊內(nèi)存中,這個單元叫做節(jié)點,每個節(jié)點知道下一個節(jié)點的地址,叫做單向鏈表。每個節(jié)點既知道下一個節(jié)點地址,又知道上一個節(jié)點地址,叫做雙向鏈表。

鏈表的特點:

  • 使用不連續(xù)的內(nèi)存空間;
  • 不需要提前聲明好指定大小的內(nèi)存空間,一次申請一小塊,按需申請。

查詢元素,需要通過節(jié)點一次向后查找,直到查找到指定元素

增刪元素:只需修改連接節(jié)點的地址即可。

優(yōu)點: 充分節(jié)省內(nèi)存空間,數(shù)據(jù)插入和刪除方便,不需要移動大量數(shù)據(jù)。

缺點: 查詢數(shù)據(jù)必須按順序找到該數(shù)據(jù),操作麻煩。

3)紅黑樹

簡單理解,就是一種類似于我們生活中樹的結(jié)構(gòu),只不過每個節(jié)點最多只有兩個葉子。計算機世界的樹,剛好與我們現(xiàn)實中的樹成鏡像相反,樹根在上,樹枝在下。二叉樹如下圖:

而我們要說的是二叉樹的一種比較有意思的叫做紅黑樹,紅黑樹本身就是一顆二叉查找樹。我們在這里只需要記住它的特點就可以非常方便的對樹中的所有節(jié)點進行排序和檢索。

小結(jié)

本文介紹了三種常用的數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表和紅黑樹,以及這些數(shù)據(jù)結(jié)構(gòu)在計算機中的重要意義。通過學(xué)習(xí)這些內(nèi)容,我們可以逐步深入了解計算機世界。


責(zé)任編輯:武曉燕 來源: 51CTO博客
相關(guān)推薦

2021-06-04 06:32:50

coverallsPython

2010-03-15 18:03:18

Java線程

2010-03-18 19:06:35

Java socket

2016-05-27 11:43:06

2023-12-15 10:11:31

數(shù)據(jù)結(jié)構(gòu)方式

2025-01-07 08:00:00

有序集合數(shù)據(jù)結(jié)構(gòu)

2009-02-19 09:48:34

XP微軟降級

2022-06-07 07:37:40

線程進程開發(fā)

2014-10-30 17:43:59

Android 5.0Android Wea

2021-08-02 10:40:45

機器人人工智能算法

2021-12-10 11:27:59

數(shù)據(jù)結(jié)構(gòu)算法單調(diào)遞增的數(shù)字

2013-03-26 10:27:32

社交游戲公司云存儲

2020-12-31 05:31:01

數(shù)據(jù)結(jié)構(gòu)算法

2018-06-19 09:54:22

MySQLHBase存儲

2020-10-30 09:56:59

Trie樹之美

2022-09-21 07:57:33

二叉搜索樹排序二叉樹

2022-09-26 07:56:53

AVL算法二叉樹

2023-03-28 07:44:23

數(shù)據(jù)結(jié)構(gòu)數(shù)組

2022-01-18 19:13:52

背包問題數(shù)據(jù)結(jié)構(gòu)算法

2020-10-21 14:57:04

數(shù)據(jù)結(jié)構(gòu)算法圖形
點贊
收藏

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