宣告
咱是個新手,沒啥技術只會最基礎的,見諒哈,
更簡化的方法還請大佬指教,
題目:
已知有個升序陣列的陣列,要插入一個元素,該陣列順序依然是升序,
例如:{ 25 , 49 , 74 , 99 },添加‘ 77 ’后,陣列為{ 25 , 49 , 74 , 77 , 99 },
思路:
- 建立第一個陣列,輸入升序的數值,
- 建立索引,確立要添加的數值位置,
- 創建第二個陣列,將資料拷貝一份隨即插入要添加的陣列,
- 銷毀第一個陣列,節約空間(說實話我感覺應該不缺這點空間吧嘿嘿),最后遍歷一遍并輸出添加完的陣列,
初始代碼如下:
具體細節在代碼中都有備注,
import java.util.Scanner;
public class twoArr {
public static void main(String[]args){
int index = -1;//創建索引
int []arr = new int[]{ 25 , 49 , 74 , 99 };
int []arrNew = new int[arr.length + 1];
Scanner myScanner = new Scanner(System.in);
System.out.println("請輸入你所喜歡的整數");
if (myScanner.hasNextInt()){//判斷輸入的值是否為整數型別
int add = myScanner.nextInt();
for (int i = 0;i < arr.length;i++){//確定索引的位置
if (arr[i] >= add){//用 >= 是因為可能出現數值相同的情況
index = i;
break;//確定新增數值位置,跳出回圈,
}
}
if (index == -1){//比較到最后依然沒找到說明新增數值是最大值,于是索引的值是陣列長度
index = arr.length;
}
for (int i = 0,j = 0;i < arrNew.length;i++){ //i 遍歷arrNew陣列,j 遍歷arr陣列
if (index != i){
arrNew[i] = arr[j];
j++;
}else{
arrNew[i] = add;
}
}
arr = arrNew;//銷毀第一個陣列,可以吧arrNew看做這個陣列的地址,arr陣列地址邊變為arrNew一樣后,原地址空間就被銷毀了
for (int i= 0; i < arrNew.length;i++){
System.out.print(arrNew[i] + "\t");
}
}else{
System.out.println("你輸入錯誤,這不是整數");
}
}
}
日常欣賞,課后娛樂(哥們是真心喜歡啊)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547606.html
標籤:Java
