注: array.length 代表陣列長度 length代表的就是長度
1.通過角標 查詢對應的元素
例如:封裝乙個函式 傳入數字1 返回 一 數字2 返回二...
public
static
void
main(string args)
public
static
char
fun(int index) ;//定義乙個陣列
// 按角標返回對應的字元
return array[index - 1];
//由於 陣列的角標是從0開始的
如果不減1 那麼傳入乙個1 返回的可能就是二 了
}2.通過元素 查詢該元素在陣列中的位置(角標)
例如:封裝乙個函式 定義乙個陣列 陣列值
分別為 3,6,11,22
傳入11
查詢對應的位置
public
static
void
main(string args) ;//定義乙個陣列
int index = fun(22, array);//定義乙個變數 接收這個方法
system.out.println(index);//輸出角標為多少
}//為了讓方法的使用性更強,可以把陣列也當引數傳進來
public
static
intfun(int index, int array)
}return a;//返回乙個a
}
陣列元素的反轉 也就是 將陣列中的值 倒過來
例如:123
45 反轉成為 543
21如果要將陣列中的值倒過來 那麼就代表
第乙個值和最後乙個換
第二個值和倒數第二個換
第三個值和倒數第三個換
...也就是
array[0] 和 array[length - 1] 換
array[1] 和 array[length - 1 - 1] 換
array[2] 和 array[length - -1 - 2] 換
從這裡我們分析出:
array[i] 和 array[length - 1 - i]換
那麼換幾次呢?
例如 123
451 和 5 換
2 和 4 換
例如 123
4567
1 和 7 換
2 和 6 換
3 和 5 換
從而得出 需要交換 length / 2 整數次
那麼 如何交換
這時 我們可以利用中間值來交換
例如://交換兩個整數
int a = 5;
int b = 10;
int mid = 0;
mid = a;
a = b;
b = mid
來達到交換的目的
例如:反轉陣列 123
45public
static
void main(string args) ;//定義陣列
//這裡做的是乙個 位址 的傳遞
reverse(array);
//遍歷陣列的方法
system.out.println(arrays.tostring(array));//列印陣列的方法
}public
static
void reverse(int array1)
}那麼 可以用方法反轉陣列 可不可以用方法反轉整數呢?
例如:public
static
void main(string args)
public
static
void reversenum(int a, int b)
將這段**輸入並執行時 發現並不能反轉
因為陣列儲存的是乙個位址 main函式中定義的位址
而reverse(array)這一步代表
將main函式中陣列的位址 轉遞給 reverse 方法
所以 main函式 和reverse 可以呼叫相同位址的陣列
所以可以進行反轉
而reversenum這個方法中 並沒有什麼可以和main函式共同使用的
當 reversenum 這個方法呼叫完以後 就出棧了
然後再繼續進行main函式的呼叫
所以這兩個整數 並不能反轉
氣泡排序其實就是按照什麼思想去排序(例如:公升序或者降序)
核心排序思想: 相鄰兩個數 進行比較 交換位置
例如:乙個陣列中的元素為: 325
1 將這個陣列進行氣泡排序
因為是相鄰兩個數 進行比較 交換
也就是說
第一次 235
1 第乙個和第二個比較後 交換
第二次 235
1 第二個和第三個比較 這時第二個已經被交換 變成 3 而 3
< 5 所以不交換
第三次 231
5 第三個和第四個比較 這時已經確定了乙個最大值 而且放到了陣列的最後
但是這時陣列還沒有完成比較 交換 我們稱 上面的步驟為 第一趟
那麼 第二趟:
第一次 231
5 第乙個和第二個比較 2
< 3 所以不交換
第二次 213
5 第二個和第三個比較 3 > 1 所以交換
由於 5 已經確定為最大值 所以 第三個和第四個已經不用比較
這時也確定了倒數第二大的數放在倒數第二個位置
第三趟第一次 123
5 第乙個和第二個比較 2 > 1 所以交換
這時也確定了倒數第三大的數放在倒數第三個位置
例如:將陣列 354
7192
8 進行氣泡排序
public
static
void main(string args) ;
// 1.把雙層迴圈結構搭出來
// 注意 內迴圈 -1 防止陣列越界
// 外迴圈 - 1 代表比較陣列長度 - 1 趟 (5個數 比較4趟)
// 內迴圈 - i 相當於 每一趟 都少比一次
// 外迴圈 相當於 比較多少趟
// 內迴圈 相當於 一趟 比較多少次
for (int i = 0; i < array.length - 1; i++) }}
// 列印陣列的方法
system.out.println(arrays.tostring(array));
}
選擇排序核心思想:
選擇乙個數 依次和後面的數 比較 換位(一般選擇第乙個數)
例如:將陣列 351
4 進行選擇排序
第一趟第一次 351
4 第乙個和第二個比
第二次 153
4 第乙個和第三個比
第三次 153
4 第乙個和第四個比
確定了最小值在第一位
第二趟第一次 135
4 第二個和第三個比
第二次 135
4 第二個和第四個比
確定了第二小在第二位
第三趟 134
5 第三個和第四個比
確定第三小在第三位
public
static
void main(string args) ;//定義乙個陣列
int temp = 0;//定義乙個變數 用於 元素交換
for (int i = 0; i < array.length - 1; i++) }}
system.out.println(arrays.tostring(array));
}
折半查詢的前提是 :
在乙個有序的陣列中查詢 乙個數在陣列中的角標
注意: 要在有序的陣列中 查詢
例如:查詢 陣列元素為 356
9121822
3355 中22的角標
public
static
void main(string args) ;
// 把 要用到的變數 全部宣告一遍
// 宣告最大 最小 中間角標
int min = 0;//最小角標
int max = array.length - 1;//最大角標 由於角標從0開始 所以最大角標是長度 -1
int mid = (array.length - 1) / 2;
// 要查詢的值
int key = 22;
/** 迴圈查詢
* array[mid] != key
*/while (key != array[mid]) else
if (key < array[mid])
// 挪動完角標後 還要進行折半操作
mid = (min + max) / 2;
//當最大角標 小於 最小角標的時候 說明 陣列中 沒有這個數
if (max < min)
}system.out.println("這個數的角標是: " + mid );
}day.3
Java陣列與陣列的遍歷
1.陣列的定義 陣列相當於乙個容器,存放了一組相同型別的資料。2.陣列存放的規則 是以下標 角標 來存放的,並且下標從0開始。3.宣告規範 資料型別 陣列名 初值。兩種表達方式 int array new int 陣列的個數 int array new int 5 int array new int...
陣列的運用
int main printf p n a printf p n a 1 printf d n sizeof a a中a表示整型陣列的首元素位址,a表示首元素,整型陣列,乙個元素佔4個位元組。printf p n a printf p n a 1 printf d n sizeof a a表示整個陣...
陣列的運用
1.在js中陣列的定義方式有兩種 var a 1,2,3,4 var b new array 1,2,3,4 當兩個陣列中只有乙個值的時候是有區別的 var a 4 此陣列只有乙個元素,為 4 var b new arr 4 此陣列有4個元素 2.通過命令對陣列的長度進行修改 例如 var a 1,...