成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js數(shù)據(jù)結(jié)構(gòu)和算法(一)概述

xumenger / 1258人閱讀

摘要:程序設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)算法數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)就是關(guān)系,沒錯(cuò),就是數(shù)據(jù)元素相互之間存在的一種或多種特定關(guān)系的集合。物理結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲(chǔ)形式。

程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法
數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)就是關(guān)系,沒錯(cuò),就是數(shù)據(jù)元素相互之間存在的一種或多種特定關(guān)系的集合。

傳統(tǒng)上,我們把數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。

邏輯結(jié)構(gòu):是指數(shù)據(jù)對(duì)象中數(shù)據(jù)元素之間的相互關(guān)系,也是我們今后最需要關(guān)注和討論的問題。

物理結(jié)構(gòu):是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲(chǔ)形式。

常用的數(shù)據(jù)結(jié)構(gòu)有:

數(shù)組,隊(duì)列(queue),堆(heap),棧(stack),鏈表(linked list ),樹(tree),圖(graph)和散列表(hash)

棧(stack):運(yùn)算只在表的一端進(jìn)行;隊(duì)列(Queue):運(yùn)算只在表的兩端進(jìn)行。

隊(duì)列(queue)是只允許在一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作的線性表。

與棧相反,隊(duì)列是一種先進(jìn)先出(First In First Out, FIFO)的線性表。

與棧相同的是,隊(duì)列也是一種重要的線性結(jié)構(gòu),實(shí)現(xiàn)一個(gè)隊(duì)列同樣需要順序表或鏈表作為基礎(chǔ)。

四大結(jié)構(gòu)

集合結(jié)構(gòu)

線性結(jié)構(gòu)

樹形結(jié)構(gòu)

圖形結(jié)構(gòu)

順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)

數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)形式有兩種:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。
例如我們編程語言的數(shù)組結(jié)構(gòu)就是這樣滴。

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):是把數(shù)據(jù)元素存放在任意的存儲(chǔ)單元里,這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

線性表

線性表:就好像是排隊(duì)一樣,具有線一樣性質(zhì)的結(jié)構(gòu),它是由零個(gè)或多個(gè)數(shù)據(jù)元素組成的有限序列。

若元素存在多個(gè),則第一個(gè)元素?zé)o前驅(qū),而最后一個(gè)元素?zé)o后繼,其他元素都有且只有一個(gè)前驅(qū)和后繼。

若將線性表記為(a1,…,ai-1,ai,ai+1,…an),則表中ai-1領(lǐng)先于ai,ai領(lǐng)先于ai+1,稱ai-1是ai的直接前驅(qū)元素,ai+1是ai的直接后繼元素。

數(shù)據(jù)類型

數(shù)據(jù)類型:是指一組性質(zhì)相同的值的集合及定義在此集合上的一些操作的總稱。

例如很多編程語言的整型,浮點(diǎn)型,字符型這些指的就是數(shù)據(jù)類型。

在計(jì)算機(jī)中,內(nèi)存不是無限大的,如果要計(jì)算或處理一些較大的數(shù)時(shí),需要開辟較大的內(nèi)存空間,于是就要對(duì)計(jì)算機(jī)進(jìn)行數(shù)據(jù)類型分類,分出多種數(shù)據(jù)類型來適合各種不同的計(jì)算條件差異。

在C語言中,數(shù)據(jù)類型可以分為:

原子類型:不可以再分解的基本類型,例如整型、浮點(diǎn)型、字符型等。

結(jié)構(gòu)類型:由若干個(gè)類型組合而成,是可以再分解的,例如整型數(shù)組是由若干整型數(shù)據(jù)組成的。

算法

算法是解決特定問題求解步驟的描述,在計(jì)算機(jī)中表現(xiàn)為指令的有限序列,并且每條指令表示一個(gè)或多個(gè)操作。

算法具有五個(gè)基本特征:輸入、輸出、有窮性、確定性和可行性。

輸出:算法至少有一個(gè)或多個(gè)輸出。
有窮性:指算法在執(zhí)行有限的步驟之后,自動(dòng)結(jié)束而不會(huì)出現(xiàn)無限循環(huán),并且每一個(gè)步驟在可接受的時(shí)間內(nèi)完成。

確定性:算法的每一個(gè)步驟都具有確定的含義,不會(huì)出現(xiàn)二義性。

可行性:算法的每一步都必須是可行的,也就是說,每一步都能夠通過執(zhí)行有限次數(shù)完成。

正確性:算法的正確性是指算法至少應(yīng)該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。

高級(jí)語言編寫的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗的時(shí)間取決于下列因素:

1. 算法采用的策略,方案
2. 編譯產(chǎn)生的代碼質(zhì)量
3. 問題的輸入規(guī)模
4. 機(jī)器執(zhí)行指令的速度

我們可以想象,線性表有兩種物理存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

線性表的順序存儲(chǔ)結(jié)構(gòu),指的是用一段地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表的數(shù)據(jù)元素。

線性表(a1,a2,…,an)的順序存儲(chǔ)如下:

線性表順序存儲(chǔ)的結(jié)構(gòu)
#define MAXSIZE 20    

typedef int ElemType;

typedef struct
{
    ElemType data[MAXSIZE];
    int length;    // 線性表當(dāng)前長(zhǎng)度
} SqList;

總結(jié)下,順序存儲(chǔ)結(jié)構(gòu)封裝需要三個(gè)屬性:

存儲(chǔ)空間的起始位置,數(shù)組data,它的存儲(chǔ)位置就是線性表存儲(chǔ)空間的存儲(chǔ)位置。

線性表的最大存儲(chǔ)容量:數(shù)組的長(zhǎng)度MaxSize。

線性表的當(dāng)前長(zhǎng)度:length。

插入算法的思路
    如果插入位置不合理,拋出異常;

    如果線性表長(zhǎng)度大于等于數(shù)組長(zhǎng)度,則拋出異?;騽?dòng)態(tài)增加數(shù)組容量;

    從最后一個(gè)元素開始向前遍歷到第i個(gè)位置,分別將它們都向后移動(dòng)一個(gè)位置;

    將要插入元素填入位置i處;

    線性表長(zhǎng)+1。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85286.html

相關(guān)文章

  • 無線網(wǎng)絡(luò)技術(shù)學(xué)習(xí)總結(jié)

    摘要:通過通信線路連入通信子網(wǎng)終端是用戶訪問網(wǎng)絡(luò)的界面網(wǎng)絡(luò)操作系統(tǒng)是相對(duì)于主機(jī)操作系統(tǒng)而言的。接收方使用同一擴(kuò)頻碼進(jìn)行擴(kuò)解。 目錄 一、計(jì)算機(jī)網(wǎng)絡(luò) 1.計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)概述 2.計(jì)算機(jī)網(wǎng)絡(luò)分類 3.無線網(wǎng)絡(luò)分類 二、無線通信和網(wǎng)絡(luò)仿真技術(shù)基礎(chǔ) 1.基本概念 2.調(diào)制 (1)、概述 (2)、常用方式 ...

    animabear 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式概述

    摘要:設(shè)計(jì)模式的類別設(shè)計(jì)模式一共分為種類型,共種。屬于結(jié)構(gòu)型的設(shè)計(jì)模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。問題描述了應(yīng)該在何時(shí)使用設(shè)計(jì)模式。解決方案描述了設(shè)計(jì)的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。 設(shè)計(jì)模式概述 1. 設(shè)計(jì)模式是什么 我們?cè)谄綍r(shí)編寫代碼的過程中,會(huì)遇到各種各樣的問題,細(xì)想一下很多問題的解決思路大致一樣的,這時(shí)候你就可以把解決問題的思路整...

    leon 評(píng)論0 收藏0
  • Java多線程進(jìn)階()—— J.U.C并發(fā)包概述

    摘要:整個(gè)包,按照功能可以大致劃分如下鎖框架原子類框架同步器框架集合框架執(zhí)行器框架本系列將按上述順序分析,分析所基于的源碼為。后,根據(jù)一系列常見的多線程設(shè)計(jì)模式,設(shè)計(jì)了并發(fā)包,其中包下提供了一系列基礎(chǔ)的鎖工具,用以對(duì)等進(jìn)行補(bǔ)充增強(qiáng)。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首發(fā)于一世流云專欄:https...

    anonymoussf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<