標籤:int() 清單 start length 排列 com font 冒泡排序 int
數組是在記憶體中儲存相同資料類型的連續的空間聲明一個數組就是在記憶體空間中划出一串聯續的空間 數組名代表的是連續空間的首地址通過首地址可以依次訪問數組所有元素元素在數組中的排序叫做下標從零開始
數組的使用數組長度一旦聲明,不可改變不可追加 聲明一個int類型的數組 int[ ] arr; 或int arr[ ] 給數組分配空間 arr=new int[5]; 給數組賦值 arr[0]=1; 0代表的是數組的第1個元素 ,元素下標為0 arr[1]=1; 1代表的是數組的第2個元素 ,元素下標為1 訪問數組資料 ,使用數組下標訪問 c=arr[4]; 數組聲明縮寫int[ ] arr={12,3,4,8,5,6,6,7,8,8,9,8};int [ ] arr1=new int[ ]{12,3,4,8,5,6,6,4};new int[ ]的[ ]一定不能放記憶體大小 使用迴圈給數組賦值樣本為 int[ ] arr=new int[5];
for (int i = 0; i < arr.length; i++) {
System.out.println("數組第"+(i+1)+"個值為"+i);
} 使用迴圈遍曆給數組賦值,輸出數組執行個體為 int[ ] arr={1,3,6,5,6,7,84,55,5};
for (int num:arr) {
System.out.println(num);
} 顯示結果為
數組中常用來排序的兩種方法
冒泡排序例子:public static void main(String[] args) { 實現學產生績排序並顯示學產生績列表int [ ] arr = {78,89,67,98,90,56,88};①N個數的數組,需要比較N-1輪for(int i=0; i<arr.length; i++){for(int j=i; j<arr.length; j++){ if(arr[i]>arr[j]){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } }}②冒泡排序 升序排列 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 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
二分法排序 二分法尋找 int start = 0; // 預設起始座標 int end = arr.length-1; // 預設結尾座標 int index = -1; // 找不到預設index為-1 while(start<=end){ int middle = (start+end)/2; // 計算中間下標 if(num == arr[middle]){ index = middle; break; } if(num > arr[middle]){ start = middle + 1; } if(num < arr[middle]){ end = middle - 1; } } System.out.println(index); }}
下面是一些執行個體. ① 做一個購物清單,手動輸入金額,輸出是要顯示總金額 Scanner in=new Scanner( System.in);
double sum=0;
double[ ] arr=new double[5];
for (int i = 0; i < arr.length; i++) {
System.out.print("請輸入第"+(i+1)+"筆購物金額:");
arr[i]=in.nextDouble();
sum+=arr[i];
}
System.out.println("序號\t\t 金額");
for (int i = 0; i < arr.length; i++) {
System.out.println((i+1)+"\t\t"+arr[i]);
}
System.out.println("總金額:"+sum );
} 顯示結果為
②輸入四家店的價格,並找出最小价格
Scanner in=new Scanner(System.in);
int[] arr=new int[4];
System.out.println("請輸入四家店的價格");
for (int i = 0; i <4; i++) {
System.out.print("第"+(i+1)+"店的價格為:");
arr[i]=in.nextInt();
}
for (int j = 0; j < arr.length-1; j++) {
if (arr[j]<arr[j+1]) {
arr[j+1]=arr[j];
}else {
arr[j+1]=arr[j+1];
}
}System.out.println("最低價格是:"+arr[3]);
}顯示結果為
③將一個數組從小到大排列
int[] arr={56,45,99,82,91,81};
int max;
int m;
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 temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (int a: arr) {
System.out.println(a);
}
}
} 顯示結果為
④輸入一個數字,在數組中尋找,若有輸出下標,若沒有輸出-1
Scanner in=new Scanner(System.in);
int[] arr={12,34,46,68,32,35,75,48,25};
System.out.println("輸入一個數字");
int sz=in.nextInt();
for (int i = 0; i < arr.length; i++) {
if (sz==arr[i]) {
System.out.println("數字下標為"+i);
return;
}
}
System.out.println("-1");
顯示結果為
⑤編寫JAVA程式,實現兩個數組的合并,並按升序排列合并後的數組
假定現有兩個數組,分別為:
int[ ] arr1={3, 1, 23};
int[ ] arr2={27, 7, 2};
設計程式,將兩個數組合并成一個數組,並按升序排列合并後的數組,輸出合并前和合并後的數組資訊
int[ ] arr1 = {3, 1, 23};
int[ ] arr2 = {27, 7, 2};
int[ ] arr = new int[arr1.length+arr2.length]; // 1. 聲明一個數組,長度等於兩個數組的長度和
for(int i=0; i<arr1.length; i++){ // 2. 遍曆兩個數組
arr[i] = arr1[i];
}
for(int i=0; i<arr2.length; i++){
arr[arr1.length+i] = arr2[i];
}
for(int i=0; i <arr.length-1; i++){ // 3. 對新數組排序
for(int j=0; j <arr.length-1-i; j++){
if( arr [ j ]>arr[ j+1 ]){
int temp = arr[ j ];
arr [ j ] = arr[ j+1 ];
arr[ j+1 ] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
顯示結果為
⑥用數組,判斷一個數字,是不是迴文數。
System.out.print("請輸入一個數組:");
Scanner in = new Scanner(System.in);
long num = in.nextLong();
long old = num; // 暫存num
int count = 0; // num有幾位,定義一個幾位的數組。 求出num的位元
while(num>0){
num /= 10;
count++;
}
int[] arr = new int[count];
count = 0; // 不斷取出數位每一位,依次放入數組中
while(old>0){
arr[count] = (int)old % 10;
old /= 10;
count ++;
}
for(int i=0,j=arr.length-1; i<=j ; i++,j--){ // 依次比較數組的首尾。 有任意一位不相等,就不是迴文數
if(arr[i] != arr[j]){
System.out.println("不是迴文數");
return;
}
}
System.out.println("是迴文數");
顯示結果為
⑦ 輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組
// Scanner in=new Scanner(System.in); //設定輸入數組
// int [] arr;
// System.out.println("輸入數組");
// for (int i = 0; i < arr.length; i++) {
// int arr[i]=in.nextInt();
int [ ] arr = {5,3,7,1,0,6,9,2};
int max = arr[0] , maxIndex = 0; // 找出最大元素的下標
for(int i=0; i<arr.length; i++){
if(max < arr[i]){
max = arr[i];
maxIndex = i;
}
}
if( maxIndex != 0 ){
int temp = arr[0];
arr[0] = arr[maxIndex];
arr[maxIndex] = temp;
}
int min = arr[0] , minIndex = 0; //找出最小元素的下標
for(int i=0; i<arr.length; i++){
if(min > arr[i]){
min = arr[i];
minIndex = i;
}
}
if(minIndex != (arr.length-1)){
int temp = arr[arr.length-1];
arr[arr.length-1] = arr[minIndex];
arr[minIndex] = temp;
}
System.out.println(Arrays.toString(arr));
}
顯示結果為
Java中的數組