5.數(shù)組

數(shù)組的概述

[是啥]數(shù)組:用來存儲一組相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),數(shù)組變量名屬于引用類型數(shù)據(jù)

[存啥]數(shù)組中的元素可以是指定的任何一種數(shù)據(jù)類型(基本類型和引用類型)

[咋用]數(shù)組的每個元素對應(yīng)一個索引(下標),可以通過索引訪問數(shù)組中的元素

[變與不變]數(shù)組被創(chuàng)建好之后,它的長度不能改變,但是數(shù)組中的各個元素的值可以被改變

數(shù)組注意事項

數(shù)組4要素

標識符:即數(shù)組名稱,用來區(qū)分不同的數(shù)組

數(shù)組元素:數(shù)組中存放的數(shù)據(jù)

元素下標:數(shù)組中每個數(shù)據(jù)的編號,從0開始,用于訪問某個具體的元素

元素類型:聲明數(shù)組時指定的數(shù)據(jù)類型

2個注意點

數(shù)組中元素類型必須相同

數(shù)組一旦創(chuàng)建,長度不可改變

數(shù)組的聲明方式

數(shù)據(jù)類型 [ ?] 數(shù)組變量名; 或 數(shù)據(jù)類型 數(shù)組變量名[ ?];

數(shù)組元素的訪問

數(shù)組在聲明,創(chuàng)建(內(nèi)存中為之分配空間)后,就可以訪問數(shù)組中的每個元素

單個元素:arrayName[index]

index 為數(shù)組元素下標(索引),可以是整型常量或整型表達式。如a[3], ?b[i], ?c[6*i]

遍歷訪問:循環(huán)訪問每個元素

普通循環(huán)

增強for循環(huán)

數(shù)組的length屬性可以獲取它的長度,例如:arr.length

索引值從0開始,且必須小于數(shù)組的長度,即0~n-1,否則發(fā)生數(shù)組越界異常

常用的排序算法

冒泡排序

選擇排序


一數(shù)組

1數(shù)組的聲明、創(chuàng)建

//格式:類型[]數(shù)組名

//聲明了一個整型(int)數(shù)組,數(shù)組中的每個元素類型為int

int[]a;

//創(chuàng)建了一個數(shù)組對象,數(shù)組中包含10個元素

a=newint[10];

2數(shù)組的下標

下標從0開始,下標范圍0 ~ n-1

//通過下標訪問數(shù)組中相應(yīng)的元素

a[0] = 12;

a[1] = 23;

a[9] = 20;

3數(shù)組的初始化

靜態(tài)初始化

//大括號中有幾個值,創(chuàng)建的數(shù)組中就有幾個元素

int[]a= {1, 2, 3, 4};

int[]b=newint[]{2, 3, 4, 5, 6};

動態(tài)初始化

int[]d=newint[5];

4數(shù)組的遍歷

1)for遍歷

for(inti= 0;i< 4;i++){

System.out.println(a[i]);

}

2)增強的for遍歷

for(intv:a){

System.out.println(v);

}

5數(shù)組的內(nèi)存結(jié)構(gòu)(重點)

棧先進后出的數(shù)據(jù)結(jié)構(gòu)

方法的局部變量存放在棧里,當(dāng)方法結(jié)束時,局部變量所占內(nèi)存被系統(tǒng)回收

絕大多數(shù)對象存放在堆里

二數(shù)組排序

1選擇排序

針對待排序的元素,使用首元素與剩余的元素依次進行比較,將最大值或最小值放在首位置。依次類推,直到所有待排序元素比較完畢。

5個數(shù),比較4輪

n個數(shù)比較,比較n-1輪

輪數(shù)i ? ?1 ?2 ?3 ?4

數(shù)據(jù)比較次數(shù)j ? 4 ?3 ?2 ?1 ? ? 5 - i

Int[] a

a[0]和a[1]…a[4]

a[1]和a[2]…a[4]

a[2]和a[3] a[4]

a[3]和a[4]

2冒泡排序

針對待排序的元素,相鄰的兩個元素依次進行比較,將最大值或最小值放在最后

n個元素,比較n-1輪

輪數(shù)i ? ?0 ?1 ?2 ?3

次數(shù)j ? ?4 ?3 ?2 ?1,j ?= ?5–1–i

int[] a;

a[0]和a[1] , ?a[1]和a[2] , ?a[2]和a[3] , ?a[3]和a[4]

a[0]和a[1] , ?a[1]和a[2] , ?a[2]和a[3]

a[0]和a[1] , ?a[1]和a[2]

a[0]和a[1]

三Arrays類

Java提供的工具類

//默認升序

Arrays.sort(a);

//講數(shù)組內(nèi)容轉(zhuǎn)換為字符串形式

Stringstr= Arrays.toString(a);

//二分查找

//第一個參數(shù),待查找的數(shù)組,第二個參數(shù),要查找的值

intindex= Arrays.binarySearch(a, 23);

四二維數(shù)組(了解)

存放數(shù)組的數(shù)組,數(shù)組中的元素為一個數(shù)組

int[][]arr=newint[2][3];

//數(shù)組中有兩個元素,每個元素存放另外一個一維數(shù)組的地址

int[][]arr1=newint[2][];

arr1[0] =newint[3];

arr1[1] =newint[2];

//二維數(shù)組的靜態(tài)初始化

int[][]arr2= {{1, 2}, {3, 4}, {5}};

//二維數(shù)組的遍歷

for(inti= 0;i<arr2.length;i++){

for(int j= 0; j<arr2[ i ].lenght;j++){

System.out.print(arr2[i][j]);

}

System.out.println();

}

五可變參數(shù)

//可變參數(shù), 類型...參數(shù)名稱

staticvoidadd(int...args){

//方法內(nèi)部當(dāng)做數(shù)組處理

intsum= 0;

for(inti= 0;i<args.length;i++){

sum+=args[i];

}

System.out.println(sum);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)組在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 4,265評論 2 13
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,899評論 0 33
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,612評論 3 44
  • 網(wǎng)上盛傳四度蟬聯(lián)胡潤全球富豪榜的湖北首富~九州通集團董事長劉寶林坐地鐵出行,等候上車,看站牌,與百姓同排,低頭玩手...
    四哥說事閱讀 10,868評論 18 11
  • 每個看起來的堅強 背后都有難言的傷
    哈希算法閱讀 254評論 0 0

友情鏈接更多精彩內(nèi)容