一維陣列和應用
阿新 • • 發佈:2021-01-13
陣列
陣列是一個變數,儲存相同資料型別的一組資料
宣告一個變數是在記憶體空間裡劃出一塊合適的空間
宣告一個數組就是在記憶體空間裡劃出一串連續的空間
陣列基本要素
識別符號–>陣列名
陣列元素 -->值
元素下標:從0開始
元素型別 -->型別
注:陣列長度固定不變,避免陣列越界
演示陣列的定義和使用
單獨宣告-分配空間-賦值-使用
int[] a;//單獨宣告
a=new int[3];//分配空間
//賦值
a[0]=88;
a[1]=90;
a[2]=96;
a[0]=75;
System. out.println(a[0]);
注:宣告陣列時不規定陣列長度
宣告陣列並分配空間
資料型別[ ] 陣列名 = new 資料型別[大小] ;
陣列元素根據型別不同,有不同的初始值
邊宣告邊賦值
int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
不能指定陣列長度
陣列定義時的常見錯誤
1、編譯出錯,沒有寫明陣列的大小
int[] a = new int[];
2、編譯出錯,陣列越界
int[] a =new int[2];
a[2] =1;
3、編譯出錯,建立陣列並賦值的方式必須在一條語句中完成
int[ ] score = new int[5];
int[ ] score2;
score2 = {60, 80, 90, 70, 85};
陣列的操作
輸出數組裡的元素
int[] a =new int[30];
for (int i=0;i<a.length;i++){
a[i]=(int)(Math.random()*100);
}
System.out.print("[");
for (int i=0;i<a.length;i++){
if ( i==a.length-1){
System.out.print(a[i]+"]");
break;
}
System.out.print(a[i]+",");
}
求和
int sum=0;
for (int i=0;i<a.length;i++){
sum+=a[i];
}
增強for
for (int num:a){//增強for 將陣列中的元素臨時賦值給num
sum+=num;
}
System.out.println(sum/(double)a.length);
}
求最大值
先假設a[0]是最大值max,數組裡的其他元素依次和max比較,如果比max大,就將值給max
int max=a[0];
for (int i = 1; i < a.length; i++) {
if (a[i]>max){
max=a[i];
}
}
System.out.println("最大值是:"+max);
插入數值
int[] a={99,85,82,63,60};
//第一步先擴容
// int[] b=new int[a.length+1];
// for (int i = 0; i < a.length; i++) {
// b[i]=a[i];
// }
int[] b=Arrays.copyOf(a,6);
System.out.println(Arrays.toString(b));
int num=98;
//從後向前比較
//比該數小的後移
//找到比該數大的 則該數在大的後面插入
//如果找不到比該數大的 則該數插入首位
boolean isInsert=false;
for (int i = b.length-2; i >=0; i--) {//此時的陣列b裡面的元素是{99,85,82,63,60,0}所以從b.length-2開始比較
if (b[i]<num){
b[i+1]=b[i];
}else {
isInsert=true;
b[i+1]=num;//找到比該數大的 則該數在大的後面插入
break;
}
}
if (!isInsert){
b[0]=num;//如果找不到比該數大的 則該數插入首位
}
System.out.println(Arrays.toString(b));
選擇排序
//基本邏輯:外層迴圈確定一個位置
//內層迴圈確定該位置的值(當前最小值)
int[] a=new int[10];
for (int i = 0; i < a.length; i++) {
a[i]=(int)(Math.random()*100);
}
System.out.println(Arrays.toString(a));
for (int i = 0; i < a.length-1; i++) {
int temp=a[i];//確定位置
int p=i;
for (int j = i+1; j < a.length; j++) {
if (temp>a[j]){
temp=a[j];
p=j;
}
}
a[p]=a[i];
a[i]=temp;
}
System.out.println(Arrays.toString(a));
Arrays
import java.util.Arrays;
Arrays.toString(a) 輸出陣列
Arrays.sort(a); 陣列從小到大排列
int[] b=Arrays.copyOf(a,6); 複製陣列a