新人求助:这个有序数组插入算法错在哪里?

bigbro001 2009-10-01 02:55:21

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出来的结果总是很奇怪,请问到底错在什么地方呢?
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbro001 2009-10-01
  • 打赏
  • 举报
回复
多谢楼上各位大侠相助!
bigbro001 2009-10-01
  • 打赏
  • 举报
回复
为了方便大家阅读,构造器和其他无关的方法都省略了。。。
tpshowcom 2009-10-01
  • 打赏
  • 举报
回复
OrdArray a = new OrdArray(100);
?
你的构造器呢?
loveofmylife 2009-10-01
  • 打赏
  • 举报
回复
import java.util.Arrays;

public class OrdArray {
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错了,没有判断数组中所有元素都比要插入的元素大的这种情况

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧