關於陣列的概念及基本操作思想
陣列的概念
用來存放連續的一組相同資料型別的變數。
陣列的特點
1。陣列本質也是一個變數,既然是變數,就必須滿足變數的三要素。
a。宣告 int a; // 向計算機申請4個位元組的記憶體空間 。
b。賦值 a = 10; //計算機將變數a翻譯成記憶體地址,透過地址找到對應的空間,將10賦值給這個空間。
c。使用 a ++; //透過地址將a的資料取出,進行計算。
2。陣列只能夠存放相同的資料型別。
3。陣列的宣告表示將計算機申請連續的記憶體空間,陣列的首地址就是第一個元素的地址 。[I@15db9742
4。陣列的資料型別可以八大基本資料型別,也可以是引用型別。
陣列的定義格式:
格式一: 資料型別[] 陣列名 = new 資料型別[陣列的長度]; (Java中寫法)
格式二: 資料型別 陣列名[] = new 資料型別[陣列的長度]; (C語言的寫法)
如何訪問一個數組的元素:
陣列名[索引]
索引/下標: 表示元素的位置,索引從0開始
java。lang。ArrayIndexOutOfBoundsException: 3
ArrayIndexOutOfBoundsException: 索引越界
產生原因: 訪問了不存在的索引
解決辦法: 檢查索引是否超出了[0,3) 的範圍
陣列的初始化
靜態初始化
格式一: 資料型別[] 陣列名 = {元素1,元素2,元素3,元素4,元素5,…元素n};
格式二: 資料型別[] 陣列名 = new int[]{元素1,元素2,元素3,元素4,元素5,…元素n};
動態初始化
資料型別[] 陣列名 = new 資料型別[陣列的大小];
可以採用以下三種方式初始化
1。逐個初始化
2。透過鍵盤輸入
3。透過隨機數初始化
###動態初始化和靜態初始化的區別
靜態初始化: 初始化的同時為每一個元素給出初始值,不需要指定陣列的長度,系統會根據元素的個數去動態計算陣列的長度。
動態初始化: 初始化的系統來為陣列賦初始值,預設值是堆區的特點的預設值,但是必須由我們指定陣列的長度。
陣列的基本操作思想
遍歷
// 迴圈輸出數列的值並按照如下格式輸出。arr[44,77,88,99,100,22]
//int[] arr = {44,77,88,99,100,22};
public static String name(int[] arr) {
String result = “”;
result = “[”;
//遍歷陣列
for (int i = 0; i < arr。length; i++) {
//去除最後一個,號
if (i ==arr。length - 1) {
result += arr[i];
}else {
result += arr[i] + “,”;
}
}
result += “]”;
return result;
}
求和
//求數列中所有數值的和
public static int number(int[] arr) {
//定義求和變數
int sum = 0;
//遍歷陣列
for (int i = 0; i < arr。length; i++) {
sum += arr[i];
}
return sum;
}
求最值
//求出最小值
public static int maximun(int[] arr) {
//假設最小值為第一個數
int min = arr[0];
//遍歷每一個數
for (int i = 0; i < arr。length; i++) {
//比較每一個數
min = (min } return min; } 倒置 //將陣列倒置並輸出 [22,100,99,88,77,44] public static void convert(int[] arr) { //遍歷陣列 for (int i = 0; i < arr。length / 2; i++) { int block = 0; block = arr[i]; //調換位置 arr[i] = arr[arr。length - 1 - i]; arr[arr。length - 1 - i] = block; } } 查詢 //基本查詢 public static boolean lookUp(int[] arr,int num) { //定義返回值變數 boolean flag = false; //遍歷陣列 for (int i = 0; i < arr。length; i++) { //查詢 if (arr[i] == num) { flag = true; break; } } return flag; } //二分法查詢 * 只能針對排序好的數列 public static boolean dichotomy(int[] arr , int n) { boolean flag = true; //定義最小索引和最大索引 int min = 0; int max = arr。length-1; //計算中間索引 int mid = (min + max) / 2; while (arr[mid]!= n) { if (arr[mid]>n) { max = mid - 1; }else if (arr[mid] min = mid + 1; } if (min > max) { return false; } //重新計算中間索引 mid = (min + max) / 2; } return flag; } 排序 //氣泡排序 public static void bubbling(int[] arr) { //外層迴圈控制排序次數 for (int i = 0; i < arr。length - 1; i++) { //內層迴圈控制冒泡次數 for (int j = 0; j < arr。length - 1 - i; j++) { //定義冒泡條件 if (arr[j] > arr[j+1]) { //定義中間變數 int num = 0; num = arr[j]; arr[j] = arr[j+1]; arr[j+1] = num; } } } } //選擇排序 public static void choice(int[] arr) { //外層迴圈控制排序次數 for (int i = 0; i < arr。length; i++) { //內層迴圈控制交換次數 for (int j = i + 1; j < arr。length; j++) { //定義交換條件 if (arr[j] < arr[i]) { //定義中間變數 int sum = 0; sum = arr[j]; arr[j] = arr[i]; arr[i] = sum; } } } }