日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

sql不等于0怎么表示_数组真的只能从0开始吗?python表示不同意

發(fā)布時(shí)間:2023/12/4 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql不等于0怎么表示_数组真的只能从0开始吗?python表示不同意 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

早在linux操作系統(tǒng)誕生開始,c語(yǔ)言作為linux系統(tǒng)的編程語(yǔ)言主力,它為后續(xù)的其他高級(jí)編程語(yǔ)言(如c++、java)提供了很多語(yǔ)言級(jí)的語(yǔ)義和協(xié)議規(guī)范。

數(shù)組做為linux操作系統(tǒng)最基本的數(shù)據(jù)結(jié)構(gòu)之一,便是其中的一項(xiàng)語(yǔ)言級(jí)高級(jí)特性,深入理解數(shù)組有助于大家更深入的了解計(jì)算機(jī)系統(tǒng)原理。

尋址:從0開始

首先,我們了解下數(shù)組的基本特性

1、線性表結(jié)構(gòu)

2、一組連續(xù)的內(nèi)存空間

3、存儲(chǔ)相同類型數(shù)據(jù)

由數(shù)組的基本特性可知:數(shù)組所申請(qǐng)的內(nèi)存是一段連續(xù)的內(nèi)存地址,其存儲(chǔ)的是相同類型的值。

從其數(shù)組內(nèi)存模型定義來看,數(shù)組的訪問是從首地址(偏移量為0)開始,如果想訪問下一個(gè)數(shù)組元素,需要把位置偏移,也就是數(shù)組內(nèi)存尋址時(shí),需要把偏移量變?yōu)?,以此類推。

計(jì)算數(shù)組內(nèi)存尋址公式:

array[i] = base_address + i * data_type_size

參數(shù)說明

  • base_address 首地址array[0] ,數(shù)組第一個(gè)元素內(nèi)存地址
  • i 為偏移量
  • data_type_size 數(shù)據(jù)類型字節(jié)大小
  • 舉個(gè)例子:

    1、定義一個(gè)int 數(shù)據(jù)類型的數(shù)組,a為變量,數(shù)組長(zhǎng)度為5

    int[] a=new int[5]

    2、假設(shè)數(shù)組地址:

  • 第一個(gè)內(nèi)存地址為:1008
  • 第二個(gè)為:1009
  • 第三個(gè)為:1010
  • ...
  • 3、尋址:由公式:array[i] = base_address + i * data_type_size

    a[0]——把a(bǔ)拿到的內(nèi)存地址:

    1008 + 0 = 1008 (指向第一個(gè)內(nèi)存地址)

    a[1]——把a(bǔ)拿到的內(nèi)存地址:

    1008 + 1 = 1009 (指向第二個(gè)內(nèi)存地址)

    a[2]——把a(bǔ)拿到的內(nèi)存地址:

    1008 + 2 = 1010 (指向第三個(gè)內(nèi)存地址)

    以此類推。。。

    關(guān)心話題(一):數(shù)組下標(biāo)為什么不從1開始

    cpu消耗

    如果數(shù)組從1開始編號(hào),公式為a[i] = base_address + (i -1) * data_type_size,對(duì)cpu而言,”i -1“就多了一次減法指令。

    歷史原因

    c語(yǔ)言的設(shè)計(jì)者使用了0開始編號(hào),后續(xù)的很多高級(jí)編程語(yǔ)言也就沿用了這個(gè)規(guī)范,降低額外的學(xué)習(xí)和理解成本。

    關(guān)心話題(二):隨機(jī)訪問

    由于數(shù)組是線性結(jié)構(gòu),那么根據(jù)首地址和偏移量就可以計(jì)算出任意數(shù)組元素的內(nèi)存地址

    array[i] = base_address + i * data_type_size

    java面試題:數(shù)組和鏈表的區(qū)別

    1、鏈表適合插入和刪除,時(shí)間復(fù)雜度是O(1)

    2、數(shù)組適合查找,查找的時(shí)間復(fù)雜度為O(1)

    究其原因是數(shù)組支持隨機(jī)訪問,根據(jù)下標(biāo)隨機(jī)訪問的時(shí)間復(fù)雜度是O(1),而鏈表需要從頭開始尋址,直到找到對(duì)應(yīng)的元素地址才結(jié)束,其復(fù)雜度為O(logn)

    關(guān)心話題(三):集合能替代數(shù)組嗎?

    數(shù)組和集合最大一個(gè)區(qū)別于在于數(shù)組能直接存儲(chǔ)基本的數(shù)據(jù)類型(如int、float、long等);而集合只能通過裝箱和拆箱存儲(chǔ)基本數(shù)據(jù)類型,代價(jià)是需要消耗性能。另外使用多維數(shù)組時(shí),用數(shù)組會(huì)直觀一些。

    jvm標(biāo)記清除算法

    為了避免數(shù)組大規(guī)模的數(shù)據(jù)搬移,可以將k位置的數(shù)據(jù)直接搬移到數(shù)組末尾位置,再把新數(shù)據(jù)放到k位置。刪除時(shí),可以將要?jiǎng)h除的數(shù)據(jù)標(biāo)記下來,當(dāng)數(shù)組沒有足夠的空間時(shí),將標(biāo)記的數(shù)據(jù)統(tǒng)一刪除,就可以提高很大的性能,也就是jvm標(biāo)記清除垃圾回收的思想 。

    總結(jié)

    大部分高級(jí)程序語(yǔ)言的數(shù)組下標(biāo)是從0開始的,而python數(shù)組下標(biāo)卻可以支持負(fù)數(shù) 。

    最后

    如果覺得本文對(duì)您有幫助的話,記得關(guān)注、轉(zhuǎn)發(fā)哦,我會(huì)為大家持續(xù)提供原創(chuàng)干貨。需要資料,請(qǐng)關(guān)注、轉(zhuǎn)發(fā),私信“資料”面試+微服務(wù)+springboot資料免費(fèi)贈(zèng)送。

    總結(jié)

    以上是生活随笔為你收集整理的sql不等于0怎么表示_数组真的只能从0开始吗?python表示不同意的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。