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