陣列的常用操作

2021-10-23 14:47:36 字數 4401 閱讀 4061

①理解陣列

②熟練使用一維陣列解決實際問題(重點)

③使用陣列實現常用演算法(難點)

④掌握二維陣列的使用

陣列是乙個變數,由資料型別相同的一組元素組成。是記憶體中一串連續的空間。

①識別符號:陣列的名稱,用於區分不同的陣列

②陣列元素:向陣列中存放的資料

③元素下標:對陣列元素進行編號

④元素型別:陣列元素的資料型別

①陣列下標從0開始

②陣列元素可以通過下標訪問

③陣列長度固定不變,避免陣列越界

語法:

datatype[

] arrayname =

newdatatype

[size]

;//例

int[

] nums;

string[

] names =

newstring[15

];double

salarys =

newdouble[55

];

一維陣列的初始化:

//宣告的同時初始化

datatype[

] arrayname =

;datatype[

] arrayname =

newdatatype

;//錯誤:宣告初始化陣列是不需要指定陣列的大小

int years[6]

=;//錯誤:宣告並初始化數是不需要指定陣列的大小

int[

12] months =

;//正確:元素個數為2(days.length == 2)

int days=

;//正確:

int array=

;

陣列長度和預設值:

①建立陣列後就不能再修改陣列的代銷

②基本資料型別陣列的預設值為0

③char型陣列元素的預設值為/u0000

④布林型別陣列的預設值為false

⑤引用型別陣列的預設值為null

陣列的應用例項:

需求:

1.求陣列中的最大值和最小值

2.定義乙個整型陣列,賦值後求出奇數個數和偶數個數

3.查詢輸入的數字咋陣列中的下標,沒有找到則下標為-1

4.隨機打亂陣列中的元素順序

5.使用foreach簡化陣列的遍歷

6.陣列的複製

語法:

datatype[

] names;

double

scores new

double[5

][3]

;int

animates;

animates new

int[4]

[4];

二維陣列的動態賦值:

string stunames =

;string coursenames =

;final

int row = stunames.length;

final

int col = coursenames.length;

double

scores =

newdouble

[row]

[col]

;for

(int i =

0; i < row; i++

)}

原理:

//對於乙個亂序的陣列,進行氣泡排序,公升序排序

//第一輪比較

//首先拿第乙個元素18與後乙個元素9進行比較,18>9,進行交換,陣列變成

//然後拿第二個元素18與後乙個元素1進行比較,18>1,進行交換,陣列變成

//然後拿第三個元素18與後乙個元素2進行比較,18>2,進行交換,陣列變成

//然後拿第四個元素18與後乙個元素7進行比較,18>7,進行交換,陣列變成

//第一輪比較結束後,最大的18移動到了陣列的末尾,一共進行了4次比較

//第二輪比較

//首先拿第乙個元素9與後乙個1進行比較,9>1,進行交換,陣列變成

//然後拿第二個元素9與後乙個2進行比較,9>2,進行交換,陣列變成

//然後拿第三個元素9與後乙個7進行比較,9>7,進行交換,陣列變成

//由於後一位18經上一輪比較已確定為最大數,所以9不用與18進行比較

//經過第二輪比較,第二大的9移動到了陣列的倒數第二位,一共進行了3次比較

//第三輪比較

//首先拿第乙個元素1與後乙個2進行比較,1<2,不進行交換,陣列變成

//然後拿第二個元素2與後乙個7進行比較,2<7,不進行交換,陣列變成

//由於後一位9經上一輪比較,已經確定了位置,所以,7不用與9進行比較

//經過第三輪比較,第三大的7移動到了陣列的倒數第三位,一共進行了2次比較

//第四輪比較

//首先拿第乙個元素與後乙個2進行比較,1<2,不進行交換

//由於第三個元素位置已經在上一輪中確認,所以不用拿第2個元素和第三個元素比較

//本輪一共進行了1次比較。

//到此為止,氣泡排序結束。

//根據上述操作,可以得出一些氣泡排序的基本規律(讀者可以用其他長度的陣列進行試驗證明):

//1、氣泡排序的總的排序輪數,為陣列的元素個數-1,即陣列長度length - 1(即n個數,每次確定乙個數的位置,只用比較n-1次就能確定完所有數的位置,最後一次只剩乙個數,沒有必要比較);

//2、氣泡排序每輪排序執行的總的比較操作次數j為陣列元素個數減去1再減去當前輪數(因為每比較一輪,就確定乙個數的位置,就代表下一輪少比較乙個數),即每輪排序執行的總的比較次數為

//length - 1 - 當前輪數;

//3、每一輪比較中,比較的兩個元素為第j個元素和第j + 1個元素,其中j為當前比較的次數,即第一次比較第1個元素和第2個元素,第二次比

//較第2個元素和第3個元素,第三次比較第3個元素和第4個元素

**:

//根據上述規律,可以寫出**

int[

] nums =

;for

(int i =

0; i < length -

1; i++)}

}//上述**即為氣泡排序的完整**,如果要進行降序排序,只需將if處的》符號替換為《符號即可。

**區別:

①選擇排序的**有兩種情況,一種是從後往前排,即公升序排序,每次找出剩餘元素的最大值或者降序排序,每次找出剩餘元素的最小值。

②另一種是從前往後排,即公升序排序,每次找出剩餘元素的最小值或者降序排序,每次找出剩餘元素的最大值)

原理:

假設以公升序排序,每次找出陣列中剩餘元素的最大值。

①首先,宣告乙個變數儲存最大值下標,每輪查詢先將下標更新為陣列第乙個元素。

②然後將拿陣列中的所有元素依次和最大值進行比較。

③在比較過程中如果有某個值比最大值大時,將最大值下標更新為該處元素的下標。然後繼續進行後續比較。

④進行過一輪比較後,確定首輪中元素的最大值下標,然後將最大值下標除的元素與陣列最後乙個元素進行交換。

⑤進行第二輪比較時,先將最大值下標更新為陣列第乙個元素下標,即0,再進行比較,此時由於最後一位已確定,所以比較次數較第一輪比較少一次。

**實現:

int

nums =

;int maxindex;

//外層迴圈控制排序輪數

for(

int i =

0; i < nums.length -

1; i++)}

//查詢完畢後,將最大值與陣列最後乙個未確定的元素進行交換

int temp = nums[maxindex]

; nums[maxindex]

= nums[nums.length -

1- i]

; nums[nums.length -

1- i]

= temp;

}

iOS陣列常用的操作

最近在看陣列,總結一下還是不錯的 陣列初始化方法 id array 返回乙個空陣列 id arraywitharray nsarray anarray 從乙個已有陣列,類似複製另乙個陣列,可以把nsarray賦值給nsmutablearray id arraywithcontentsoffile n...

ruby 常用的陣列操作

1.1,1,3,5 1,2,3 1,3 取兩個陣列中都有的元素,但只取乙個,不重複取。2.1,2,3 3 1,2,3,1,2,3,1,2,3 如果 號後面跟的是數字n,將原先陣列中的所有元素重複n次,串聯起來。相當於普通數字的乘法操作。1,2,3 1 2 3 如果 號後面跟的是字串,也將返回字串。3...

Python常用的陣列操作

1.在python學習的過程中,經常要建立陣列,對陣列裡面的元素進行操作,所以我們需要掌握python中對於陣列操作的基本語法 2.下面是一些常用的陣列建立 賦值的一些語法 其中需要使用到python中的numpy包,我們使用對陣列操作的相關函式需要匯入這個包 import numpy as npn...