题目如下:
求出插入后的数组
已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,比如:
[10,12,45,90],添加23 后, 数组为 [10,12,23,45,90]
public class the_h01 { public static void main(String[] args) { int[] arr={10,12,45,90}; int num = 23; int[] new_arr = new int[arr.length+1]; for (int i=0;i<arr.length ;i++ ) { new_arr[i]=arr[i]; } arr = new int[new_arr.length]; for (int i=0;i<arr.length ;i++ ) { arr[i]=new_arr[i]; } new_arr = null; arr[arr.length-1] = num;
for (int i=1;i<arr.length-1 ;i++ ) { int index = -1; for (int j=1;j<arr.length-i+1 ;j++ ) { if (arr[j]<arr[j-1]) { int numx = arr[j]; arr[j] = arr[j-1]; arr[j-1] = numx; index = i; } for (int ix=0;ix<arr.length ;ix++ ) { System.out.print(arr[ix]+" "); } System.out.println("");
} if (index==-1) { System.out.println("-------"); break; } }
} }
|
当我听完老师的解释后,有些被震撼到了。这就是……算法的魅力?
public class the_h01 { public static void main(String[] args) { int[] arr={10,12,45,90}; int num = 23;
int[] new_arr = new int[arr.length+1]; int index = -1; for (int i=0;i<arr.length ;i++ ) { if (num<arr[i]) { index = i; break; } } if (index==-1){ index=arr.length; } for (int i=0,j=0;i<new_arr.length ;i++ ) { if (index!=i) { new_arr[i]=arr[j]; j++; } else { new_arr[i]=num; } } for (int i=0;i<new_arr.length ;i++ ) { System.out.print(new_arr[i]+" "); } } }
|
