有一個已經排好序的陣列。現輸入一個數,要求按原來的規律將它插入陣列中。
阿新 • • 發佈:2018-12-13
首先判斷此數是否大於最後一個數,然後再考慮插入中間的數的情況,插入後此元素之後的數,依次後移一個位置。
import java.util.Scanner; public class test30{ public static void main(String[] args){ int[] a={5,6,8,2,1,13,15,77,88,37,31,58}; //定義一個整型陣列 System.out.print("排序前:"); for(int x:a){ //輸出排序前陣列 System.out.print(x+" "); } System.out.println(); int[] b=sort(a); //執行排序 System.out.print("排序後:"); for(int x:b){ //列印排序後陣列 System.out.print(x+" "); } System.out.println(); System.out.print("請輸入要插入的數:"); Scanner scan = new Scanner(System.in); int input = scan.nextInt(); scan.close(); int[] c=insert(input,b);//向陣列中插入數字 System.out.print("插入數字後:"); for(int x:c){ //列印插入後的陣列 System.out.print(x+" "); } } private static int[] sort(int[] a){ //升序 氣泡排序 for(int j=0;j<a.length-1;j++){ for(int i=0;i<a.length-1;i++){ if(a[i]>a[i+1]){ int temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } } return a; } private static int[] insert(int n,int[] b){ int[] tempArray=new int[b.length+1];//定義陣列存放插入後的陣列。 if(n>b[b.length-1]){//n大於排序好的陣列最後一位,直接把n放到tempArray最後一位。 tempArray[b.length]=n; for(int i=0;i<b.length;i++){ tempArray[i]=b[i]; //之前的數字按順序賦值。 } }else{ for(int i=0;i<b.length;i++){ if(n<b[i]){ //找到原來陣列中大於n的第一位,並將n放在此位置 //給之前沒變的陣列賦值 for(int j=0;j<i;j++){ tempArray[j]=b[j]; } //後面向後挪一位 for(int k=i;k<b.length;k++){ tempArray[k+1]=b[k]; } tempArray[i]=n; break; } } } return tempArray; } }