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]+" ");
}
}
}