1. 程式人生 > >Java習題——陣列(二)

Java習題——陣列(二)

1. 將一個給定的整型陣列轉置輸出,

例如: 源陣列,1 2 3 4 5 6

轉置之後的陣列,6 5 4 3 2 1

//1. 將一個給定的整型陣列轉置輸出,
//	例如:	源陣列,1 2 3 4 5 6
//			轉置之後的陣列,6 5 4 3 2 1
package cn.edu.nefu;

public class Test01 {
	public static void main(String[] args) {
		int [] arr = {1,2,3,4,5,6};
		int [] arr1 = new int [arr.length];
		for(int i=0;i<arr.length;i++){
			arr1[arr.length-i-1] = arr[i];
		}
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
	}
}

2.靜態初始化一維陣列{10,20,11,35,6,89},進行氣泡排序

//2.靜態初始化一維陣列{10,20,11,35,6,89},進行氣泡排序
package cn.edu.nefu;

public class Test02 {
	public static void main(String[] args) {
		int [] arr = {10,20,11,35,6,89};
		for(int i=0;i<arr.length;i++){
			int temp;
			for(int j=0;j<arr.length-i-1;j++){
				if(arr[j]>arr[j+1]){
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
	}
}

3.靜態初始化二維陣列 {{1},{2,3},{4,5,6}},輸出每個元素的值

//3.靜態初始化二維陣列 {{1},{2,3},{4,5,6}},輸出每個元素的值
package cn.edu.nefu;

public class Test03 {
	public static void main(String[] args) {
		int [][] arr = {{1},{2,3},{4,5,6}};
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				System.out.print(arr[i][j]+" ");	
			}
			System.out.println();
		}
	}
}

4、 現在有如下的一個數組:

int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;

要求將以上陣列中值為0的項去掉,將不為0的值存入一個新的陣列,生成的新陣列為:

int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;

思路:生活中的問題解決 = 程式中的解決;

1、 確定出不為0的個數,這樣可以開闢新陣列;

2、 從舊的陣列之中,取出內容,並將其賦給新開闢的陣列;

/*4、	現在有如下的一個數組:
		int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
	要求將以上陣列中值為0的項去掉,將不為0的值存入一個新的陣列,生成的新陣列為:
		int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;
思路:生活中的問題解決 = 程式中的解決;
	1、	確定出不為0的個數,這樣可以開闢新陣列;
	2、	從舊的陣列之中,取出內容,並將其賦給新開闢的陣列;*/
package cn.edu.nefu;

public class Test04 {
	public static void main(String[] args) {
		int oldArray [] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
		int sum = 0;
		for(int i=0;i<oldArray.length;i++){
			if(oldArray[i]==0){
				sum++;
			}
		}
		int newArray [] = new int [oldArray.length-sum];
		sum=0;
		for(int i=0;i<oldArray.length;i++){
			if(oldArray[i]==0){
				sum++;
			}else{
				newArray[i-sum] = oldArray[i];
			}
		}
		for(int i=0;i<newArray.length;i++){
			System.out.print(newArray[i]+" ");
		}
	}
}

5、 現在給出兩個陣列:

· 陣列A:{1,7,9,11,13,15,17,19}

· 陣列b:{2,4,6,8,10}

      兩個數組合併為陣列c,按升序排列。

主要的目的是熟悉這兩個操作的方法,陣列擴大,必須要將原始陣列的內容拷貝進去。

/*5、	現在給出兩個陣列:
	· 陣列A:{1,7,9,11,13,15,17,19}
	· 陣列b:{2,4,6,8,10}
      兩個數組合併為陣列c,按升序排列。
	主要的目的是熟悉這兩個操作的方法,陣列擴大,必須要將原始陣列的內容拷貝進去。*/
package cn.edu.nefu;

import java.util.Arrays;

public class Test05 {
	public static void main(String[] args) {
		int [] A = {1,7,9,11,13,15,17,19};
		int [] B = {2,4,6,8,10};
		int [] C = Arrays.copyOf(A,A.length+B.length);
		System.arraycopy(B, 0, C, A.length, B.length);
		Arrays.sort(C);
		for(int i=0;i<C.length;i++){
			System.out.print(C[i]+" ");
		}
	}
}

6.靜態初始化二維陣列 {{11,15,32,21},{2,3},{4,5,6}},輸出每個元素的值,並從小到大排序。

//6.靜態初始化二維陣列 {{11,15,32,21},{2,3},{4,5,6}},輸出每個元素的值,並從小到大排序。
package cn.edu.nefu;

import java.util.Arrays;

public class Test06 {
	public static void main(String[] args) {
		int [][] arr = {{11,15,32,21},{2,3},{4,5,6}};
		int sum=0;
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				sum++;
			}
		}
		int [] arr1 = new int [sum];
		sum=0;
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				arr1[sum] = arr[i][j];
				sum++;
			}
		}
		Arrays.sort(arr1);
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
	}
}

7.. *輸出楊輝三角
楊輝三角如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
楊輝三角的特點:
1. 第i 行有i 個元素
2. 每一行的第一個元素和最後一個元素都為1
3. 除了1 之外,每個元素的值,都等於上一行同位置的元素以及前一個元素的和。
例如:
1 4 6 4 1 的下一行
1 a1 a2 a3 a4 1
a1 = 4 + 1 = 5
a2 = 6 + 4 = 10
a3 = 4 + 6 = 10
a4 = 1 + 4 = 5
依次類推。
要求:讀入一個整數n,輸出楊輝三角的前n 行

package cn.edu.nefu;

import java.util.Scanner;

public class Test07 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入一個整數n:");
		int n = sc.nextInt();
		int [][] arr = new int [n][n];
		for(int i=0;i<n;i++){
			for(int j=0;j<=i;j++){
				if(j==0){
					arr[i][j]=1;
				}else{
					arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
				}
				
			}
		}
		for(int i=0;i<n;i++){
			for(int j=0;j<=i;j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
	}
	
	

}

8. *陣列的插入和刪除

   定義一個長度為10的陣列,通過控制檯的輸入5個數,

     1.向陣列中指定的位置中插入一個新元素,

     2.刪除指定位置的元素

package cn.edu.nefu;

import java.util.Scanner;

public class Test08 {
	public static void main(String[] args) {
		int arr [] = new int [10];
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入5個數:");
		for(int i=0;i<5;i++){
			arr[i] = sc.nextInt(); //通過控制檯的輸入5個數
		}
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		
		//向陣列中指定的位置中插入一個新元素
		System.out.println("請輸入插入元素的位置:");
		int index = sc.nextInt();	//插入元素的位置
		System.out.println("請輸入插入元素的值:");
		int num = sc.nextInt();		//插入元素的值
		int newArr [] = new int [arr.length+1];
		System.arraycopy(arr, 0, newArr, 0, index);
		newArr[index] = num;
		System.arraycopy(arr, index, newArr, index+1, arr.length-index);
		for(int i=0;i<newArr.length;i++){
			System.out.print(newArr[i]+" ");
		}
		System.out.println();
		
		//刪除指定位置的元素
		int[] Arr = new int [arr.length-1];
		System.out.println("請輸入刪除元素的位置");
		int index1 = sc.nextInt();	//刪除元素的位置
		System.arraycopy(arr, 0, Arr, 0, index1);
		System.arraycopy(arr, index1+1, Arr, index1, arr.length-index1-1);
		for(int i=0;i<Arr.length;i++){
			System.out.print(Arr[i]+" ");
		}
	}
}