首先 告訴你在“數組”中插入數據的可能行為“0”,看看數據結構就知道怎么回事了。唯一的可能性就是找到那個數相應的位置然后重新建立數組將數據插入到新的數組。
/**
被你的提問牽著走了,其實這個問題很簡單,反正是在已排好序中插入一個數,
那就先新建一個數組,把原來的數組中的數據全復制過去,一并將要插入的數也放進去(放在開始或結尾都行),然后重新排序就行了,原來我還想先找出插入點,再作處理,其實從效率上說,感覺差不多,所以就有如下設計:
*/
///: Filename: Insert.java
public class Insert {
public static void main(String[] args) {
int[] i = {5,6,7,44,55,89,};//原來的數組
int x = 24;//要插入的數據
System.out.print("插入前數據: ");
print(i);
i=insert(i,x);
System.out.print("插入["+x+"]后數據: ");
print(i);
}
/**遍歷并打印出數組中的數據*/
private static void print(int[] a){
for(int i=0; i System.out.print(a[i]+", ");
System.out.println();//換行
}
/**插入數據并重新排序的方法*/
private static int[] insert(int[] a,int in){
int[] copy = new int[a.length+1];//新建一個臨時數組,長度比原數要大1
copy[0]=in;//先將要插入的數據放入第一單元格
//原來數組中的數復制過來,存在第二格為開始的單元格中
for(int i=0; i copy[i+1]=a[i];
//對臨時數組重新排序
for(int i=0; i //如果前一數據大于后一數據,就進行交換.
if(copy[i]>copy[i+1]){
copy[i]+=copy[i+1];
copy[i+1]=copy[i]-copy[i+1];
copy[i]-=copy[i+1];
i-=i==0?1:2;//逐級上溯
}
//返回臨時數組,任務完成
return copy;
}
}
///:~END
Tags - 數組問題
/**
被你的提問牽著走了,其實這個問題很簡單,反正是在已排好序中插入一個數,
那就先新建一個數組,把原來的數組中的數據全復制過去,一并將要插入的數也放進去(放在開始或結尾都行),然后重新排序就行了,原來我還想先找出插入點,再作處理,其實從效率上說,感覺差不多,所以就有如下設計:
*/
///: Filename: Insert.java
public class Insert {
public static void main(String[] args) {
int[] i = {5,6,7,44,55,89,};//原來的數組
int x = 24;//要插入的數據
System.out.print("插入前數據: ");
print(i);
i=insert(i,x);
System.out.print("插入["+x+"]后數據: ");
print(i);
}
/**遍歷并打印出數組中的數據*/
private static void print(int[] a){
for(int i=0; i
System.out.println();//換行
}
/**插入數據并重新排序的方法*/
private static int[] insert(int[] a,int in){
int[] copy = new int[a.length+1];//新建一個臨時數組,長度比原數要大1
copy[0]=in;//先將要插入的數據放入第一單元格
//原來數組中的數復制過來,存在第二格為開始的單元格中
for(int i=0; i
//對臨時數組重新排序
for(int i=0; i
if(copy[i]>copy[i+1]){
copy[i]+=copy[i+1];
copy[i+1]=copy[i]-copy[i+1];
copy[i]-=copy[i+1];
i-=i==0?1:2;//逐級上溯
}
//返回臨時數組,任務完成
return copy;
}
}
///:~END
Tags - 數組問題