數(shù)組幕与,編程語(yǔ)言的基石

在計(jì)算機(jī)的世界中挑势,數(shù)據(jù)可以有各種各樣的組織形式,比如啦鸣,模擬現(xiàn)實(shí)中排隊(duì)取錢(qián)的隊(duì)列潮饱,代表復(fù)雜的社交網(wǎng)絡(luò)的圖結(jié)構(gòu)等,不同的數(shù)據(jù)結(jié)構(gòu)各自適應(yīng)不同的情況诫给。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)香拉,我們能夠?yàn)槲覀円鉀Q的問(wèn)題,選擇合適的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ)中狂,從而使得程序更加高效凫碌。


數(shù)組

數(shù)組,是數(shù)據(jù)結(jié)構(gòu)中最簡(jiǎn)單胃榕,也最常用的一個(gè)數(shù)據(jù)結(jié)構(gòu)盛险。所謂數(shù)組,是有序的元素序列勋又。若將有限個(gè)類(lèi)型相同的變量>苦掘,那么這個(gè)名稱(chēng)為數(shù)組名。組成數(shù)組的各個(gè)變量稱(chēng)為數(shù)組的分量楔壤,也稱(chēng)為數(shù)組的元素鹤啡,有時(shí)也稱(chēng)為下標(biāo)變量。用于區(qū)分?jǐn)?shù)組的各個(gè)元素的數(shù)字編號(hào)稱(chēng)為下標(biāo)蹲嚣。數(shù)組是在程序設(shè)計(jì)中递瑰,為了處理方便, 把具有相同類(lèi)型的若干元素按無(wú)序的形式組織起來(lái)的一種形式端铛。這些無(wú)序排列的同類(lèi)數(shù)據(jù)元素的集合稱(chēng)為數(shù)組泣矛。

查找元素

image

數(shù)組是一個(gè)順序存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)疲眷,如圖所示是一個(gè)長(zhǎng)度為10的數(shù)組禾蚕,它的特點(diǎn)是存取速度快。通過(guò)指定下標(biāo)狂丝,我們可以很快的取值换淆。比如a[0],a[5]等操作哗总,都可以在O(1)時(shí)間內(nèi)完成。然而倍试,如果我們并不提前知道元素所在的位置的呢讯屈?假如我們要查找的元素為100,偽代碼表示如下

for(int i=0;i<n;i++){
    if(a[i]==100){
        return i;//返回元素所在下標(biāo)   
    }
}
return -1;//如果遍歷完都沒(méi)有找到县习,則返回-1.

最好情況下涮母,100在a[0]的位置,一下子就能找到躁愿,最壞情況下叛本,100在數(shù)組的最后面,甚至是不存在彤钟,則需要遍歷整個(gè)數(shù)組来候。****所以在數(shù)組中查找元素的時(shí)間復(fù)雜度為O(n)。

插入元素

image

如果我們要在數(shù)組中插入一個(gè)新的元素逸雹,根據(jù)插入位置的不同营搅,效率也有所不同。以上圖為例梆砸,如果要插入的位置在a[5]转质,那么直接a[5]=x就好。如果要插入的位置在a[0]呢帖世?就需要將所有的元素往后移動(dòng)一格峭拘,再把a(bǔ)[0]賦值為x。把所有元素往后移動(dòng)一格的時(shí)間復(fù)雜度為O(n)狮暑,所以在數(shù)組中插入新元素時(shí)鸡挠,時(shí)間復(fù)雜度為O(n)。其偽代碼如下:

for(i=n;i>=insert_index;i--){//從后往前遍歷到插入位置之后搬男,把前面的數(shù)賦值給后面的數(shù)
    a[i]=a[i-1];
}
a[i]=x;//跳出循環(huán)后拣展,i剛好位于插入位置,直接賦值新插入的元素缔逛。
a.length = a.length+1;

刪除元素

image

除了新增备埃,刪除也是同理。如果要?jiǎng)h除a[4]位置的99褐奴,直接把a(bǔ).length減少1就好按脚。在計(jì)算機(jī)中,通常刪除一個(gè)東西敦冬,并不是真的要去刪除它辅搬,而是不再去管理它,再也訪問(wèn)不到它脖旱,就當(dāng)做刪除了堪遂。而如果是刪除a[1]處的90介蛉,除了將a.length減1之外,還需要將a[2]到a[4]的數(shù)據(jù)往前移一格溶褪,變?yōu)閍[1]到a[3]币旧,把插入位置后的所有元素前移一格的時(shí)間復(fù)雜度為O(n)。所以數(shù)組刪除元素時(shí)猿妈,時(shí)間復(fù)雜度為O(n)吹菱。

for(i=delete_index-1;i<n-1;i++){//從刪除位置開(kāi)始,用后面一個(gè)位置的值覆蓋前面的值彭则。
    a[i]=a[i+1];
}
a.length = a.length - 1;

總結(jié)

時(shí)間復(fù)雜度:訪問(wèn)元素O(1)毁葱,查找元素O(n),插入元素O(n)贰剥,刪除元素O(n)
優(yōu)點(diǎn)****:連續(xù)存儲(chǔ)倾剿,具有在O(1)時(shí)間內(nèi)隨機(jī)存取的特性。
缺點(diǎn):沒(méi)有用到的空間被浪費(fèi)了蚌成。


公眾號(hào):萌凱的程序人生
一枚IT研究生前痘,致力于分享自己的學(xué)習(xí)經(jīng)歷和總結(jié)!
喜歡的話(huà)請(qǐng)點(diǎn)贊關(guān)注担忧,謝謝您芹缔!

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓶盛,隨后出現(xiàn)的幾起案子最欠,更是在濱河造成了極大的恐慌,老刑警劉巖惩猫,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芝硬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡轧房,警方通過(guò)查閱死者的電腦和手機(jī)拌阴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奶镶,“玉大人迟赃,你說(shuō)我怎么就攤上這事〕д颍” “怎么了纤壁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捺信。 經(jīng)常有香客問(wèn)我酌媒,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任馍佑,我火速辦了婚禮斋否,結(jié)果婚禮上梨水,老公的妹妹穿的比我還像新娘拭荤。我一直安慰自己,他們只是感情好疫诽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布舅世。 她就那樣靜靜地躺著,像睡著了一般奇徒。 火紅的嫁衣襯著肌膚如雪雏亚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天摩钙,我揣著相機(jī)與錄音罢低,去河邊找鬼。 笑死胖笛,一個(gè)胖子當(dāng)著我的面吹牛网持,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播长踊,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼功舀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了身弊?” 一聲冷哼從身側(cè)響起辟汰,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阱佛,沒(méi)想到半個(gè)月后帖汞,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凑术,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年涨冀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麦萤。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹿鳖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壮莹,到底是詐尸還是另有隱情翅帜,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布命满,位于F島的核電站涝滴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歼疮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一杂抽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧韩脏,春花似錦缩麸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吹散,卻和暖如春弧械,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背空民。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工刃唐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人界轩。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓画饥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耸棒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荒澡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容