public class OrdArray {
private long[] a;
private int maxSize;
private int size; public void insert1(long value) {
if (size >= maxSize)
System.out.println("Array Full.");
else if (size == 0) {
a[0] = value;
size++;
} else if (value > a[size - 1]) {
a[size] = value;
size++;
} else {
for (int i = 0; i < size; i++) {
if (value < a[i]) {
for (int j = size; j > i; j--)
a[j] = a[j - 1];
a[i] = value;
size++;
break;
}
}
}
} public void insert2(long value) {
if (size >= maxSize)
System.out.println("Array Full.");
} else if (size == 0) {
a[0] = value;
size++;
} else if (value > a[size - 1]) {
a[size] = value;
size++;
} else {
for (int i = size - 1; i >= 0; i--) {
if (value <= a[i]) {
a[i + 1] = a[i];
} else {
a[i + 1] = value;
size++;
break;
}
}
}
} public static void main(String[] args) {
OrdArray a = new OrdArray(100);
for (int i = 0; i < 10; i++)
a.insert2((int) (Math.random() * 100));
System.out.println(a);
}第二个插入算法insert2出来的结果总是很奇怪,请问到底错在什么地方呢?
private long[] a;
private int maxSize;
private int size; public void insert2(long value) {
if (size >= maxSize){
System.out.println("Array Full.");
} else if (size == 0) {
a[0] = value;
size++;
} else if (value > a[size - 1]) {
a[size] = value;
size++;
} else {
for (int i = size - 1; i >= 0; i--) {
if (value <= a[i]) {
a[i + 1] = a[i];
} else {
a[i + 1] = value;
size++;
return;
}
}
a[0]=value;
size++;
}
}
public OrdArray(int i){
this.maxSize=i;
a=new long[maxSize];
}
public static void main(String[] args) {
OrdArray a = new OrdArray(10);
for (int i = 0; i < 10; i++){
a.insert2((long) (Math.random() * 100));
}
System.out.println(Arrays.toString(a.a));
}
}
测试结果:[2, 5, 36, 47, 61, 70, 78, 87, 98, 99]
给你改了一下你的程序,其他的错误就说了(你的程序没有带参的构造,还有少了两个括号),
主要是最后的那个else错了,没有判断数组中所有元素都比要插入的元素大的这种情况
?
你的构造器呢?