1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        為什么數(shù)組的下標(biāo)從 0 開始?

        共 1152字,需瀏覽 3分鐘

         ·

        2021-07-31 02:46

        大家好,我是sai哥~


        數(shù)組,作為技術(shù)同學(xué)一定不會(huì)陌生。天天和它打交道,閉著眼都認(rèn)識(shí)它。

        首先,我們來復(fù)習(xí)下數(shù)組的定義

        數(shù)組是一組連續(xù)內(nèi)存空間存儲(chǔ)的具有相同類型的數(shù)據(jù),整個(gè)排列像一條線一樣,是一種線性表數(shù)據(jù)結(jié)構(gòu)。


        1d6ab364882d4c443253ce132b4ddb34.webp


        那么,問題來了,數(shù)組的下標(biāo)為什么要從 0 開始?從 1 開始行不行?

        19980600ec0400ac90dac2d48b97dfea.webp

        端好你的小茶杯,開始進(jìn)入正題

        數(shù)組之所以廣泛使用,是因?yàn)樗С蛛S機(jī)訪問。


        什么叫隨機(jī)訪問?

        數(shù)據(jù)在內(nèi)存中都是按順序存放的,通過下標(biāo)直接觸達(dá)到某一個(gè)元素存放的位置。


        8bee13c881a28f25a208b17945568b54.webp


        公式:Tom哥[n]?= base_address + n * data_size
        • base_address,表示數(shù)組的首地址
        • n,表示偏移量
        • data_size,表示數(shù)組類型的字節(jié)數(shù)

        ①?讀取上面數(shù)組的?【0】位置的?`微`
        ②?讀取上面數(shù)組的?【9999】位置的?`注`

        由于基于計(jì)算的內(nèi)存地址讀取數(shù)據(jù),上面兩種情況的耗費(fèi)的時(shí)間是一樣,時(shí)間復(fù)雜度為?O(1)

        注意:想要使用隨機(jī)訪問,一定要滿足兩個(gè)條件:??1、連續(xù)的內(nèi)存空間? 2、相同類型的數(shù)據(jù)


        知識(shí)補(bǔ)充:

        隨機(jī)訪問對(duì)應(yīng)的是順序訪問

        順序訪問:鏈表在內(nèi)存中不是按順序存放的,而是通過指針連在一起,訪問某一元素,必須從鏈頭開始順著指針才能找到某一個(gè)元素。


        突然,一個(gè)奇怪的念頭冒了出來,假如我們將數(shù)組的首個(gè)下標(biāo)從 1 開始 ,會(huì)怎么樣?


        4c8fa6b638cdd64d0d017d993999e2ea.webp


        我們讀取 下標(biāo)為n 的數(shù)據(jù)


        公式:Tom哥[n]?=? base_address +?(n-1)?* data_size

        與上面的公式的區(qū)別,多了一次 n-1 操作

        雖然也能讀取數(shù)組中的值,但是多了一次減法的指令運(yùn)算。


        2ac32644af03c290990cebd7e0b50ca6.webp


        數(shù)組是一個(gè)最基礎(chǔ)最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。要知道我們的上層API內(nèi)部很多都會(huì)依賴于數(shù)組,而互聯(lián)網(wǎng)應(yīng)用又講究一個(gè)高并發(fā),一言不合就是千萬(wàn)級(jí)QPS,如此高頻的訪問量,這個(gè)冗余的減運(yùn)算 就會(huì)放大無數(shù)倍,產(chǎn)生巨大的性能損耗。

        這樣說,可能大家感受不一定明顯!?。?/span>

        ”我在馬路邊撿到一分錢,把它交到警察叔叔手里邊“?,F(xiàn)在再有一分錢,你還會(huì)撿嗎,估計(jì)很多人都看不上眼,但要是全國(guó)人民每人給你一分錢呢

        14億 * 1分錢 = ?1400萬(wàn) 人民幣


        ac4cad8e1ff4869e3baf1e13e7b21afb.webp


        是不是可以立馬辭職,回家躺平了!

        量變引發(fā)質(zhì)變,做軟件開發(fā),我們一定要考慮將性能優(yōu)化到極致,骨子里透著工匠精神。



        關(guān)于Tom哥:前阿里架構(gòu)師,出過專利,競(jìng)賽拿過獎(jiǎng),CSDN博客專家,負(fù)責(zé)過電商交易、社區(qū)生鮮、營(yíng)銷、金融等業(yè)務(wù),多年團(tuán)隊(duì)管理經(jīng)驗(yàn),愛思考,喜歡結(jié)交朋友!

        推薦閱讀

        面試題:mysql 一棵 B+ 樹能存多少條數(shù)據(jù)?

        代碼寫的爛,經(jīng)常被同事懟,教你一招!

        同事問我,SQL 語(yǔ)句明明命中了索引,為什么執(zhí)行很慢?

        學(xué)會(huì)這10個(gè)設(shè)計(jì)原則,離架構(gòu)師又進(jìn)了一步?。?!

        億級(jí)系統(tǒng)的Redis緩存如何設(shè)計(jì)???

        人人都是架構(gòu)師???談何容易??!

        瀏覽 39
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中文字幕免费高清在线观看 | a级大片免费观看 | 天天射天天日综合 | 孙头退休后日女儿的幸福生活 | chinaxxxxhdvideos在线 | 天天日大香蕉 | 欧美性夜黄A片爽爽免费视频 | 色戒免费高清电影观看版 | 正在播放迷姦新婚夜 | 欧美馒头逼 |