每日作業1208
二分插入法
已知, 目前有一個已正序排好的9個元素的陣列,
現在輸入一個數
要求按原來排序的規律將它插入陣列中。
輸入:
第一行, 9個整數, 表示已經排好序的陣列
第二行: 一個整數 表示需要被插入的數字
輸出:
插入數字後的陣列
樣例輸入:
1 7 8 17 23 24 59 62 101
50
樣例輸出:
1 7 8 17 23 24 50 59 62 101
//參考了路過的假面騎士的程式碼,感謝
public class Task1028 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//根據題目要求,先要有9個正序排列的數字,因為中間要加入一個數字,所以建立一個10個元素的陣列
int[] nums = new int[10];
int temp = -1; //狀態
System.out.println("請依次輸入9個數字,並保持正序排列");
for (int i = 0; i < 9; i++) {
nums[i] = input.nextInt();
if(nums[i] > temp) {
temp = nums[i];
} else {
i--;
}
}
System.out.println("請輸入一個要插入的數字");
int a = input.nextInt();
int left = 0;
int right = 8;
int index = -1; //要插入的位置
while (nums[left] <= nums[right]) {
int mid = left + (right - left) / 2;
if(a == nums[mid]) {
index = mid;
} else if(a > nums[mid]) {
left = mid + 1;
} else if(a < nums[mid]) {
right = mid - 1;
}
index = left;
}
for(int i = 9; i > index; i--) {
nums[i] = nums[i-1];
}
nums[index] = a;
System.out.println(Arrays.toString(nums));
}
}
//功能實現了,整體效果不是很好,回頭在整理幾份
可以用sort() 方法自動排序的
相關文章
- 洛谷 P1208混合牛奶 題解
- 作業系統 作業5作業系統
- 每日CSS_純CSS製作進度條CSS
- 作業
- ORA-1122/ORA-1208 資料檔案頭寫丟失故障
- 作業系統(1)——作業系統概述作業系統
- 【團隊作業】第三週作業1
- 作業系統(一):作業系統概述作業系統
- 2024.5.22作業
- 2024.4.19作業
- 2024.4.12作業
- 2024.4.28作業
- 2924.3.27作業
- 2024.3.28作業
- 2024.3.29作業
- 2024.5.23作業
- 2024.3.22作業
- 2024.4.10作業
- 作業3
- 2024.3.12作業
- 2024.3.13作業
- 2024.5.7作業
- 2024.4.1作業
- 2024.4.25作業
- 2024.3.25作業
- 2024.4.16作業
- 2024.3.15作業
- 2024.3.14作業
- 作業四
- python作業Python
- 作業2
- 作業01
- 作業二
- 作業7
- 2024.6.24作業
- 2024.6.20作業
- 2024.6.21作業
- 2024.6.13作業