Java 插入排序出错
我有一个填充了随机整数的数组列表。我尝试使用插入排序进行排序,然后在屏幕上打印它们。除了插入排序外,所有操作都正常。。。不确定什么地方出了问题,有人能看一看,找出哪里出了问题。。。谢谢Java 插入排序出错,java,arraylist,insertion,Java,Arraylist,Insertion,我有一个填充了随机整数的数组列表。我尝试使用插入排序进行排序,然后在屏幕上打印它们。除了插入排序外,所有操作都正常。。。不确定什么地方出了问题,有人能看一看,找出哪里出了问题。。。谢谢 public static ArrayList<Integer> oh = new ArrayList<Integer>(); public static ArrayList<Integer> gen2() { ArrayList<Integer> oh
public static ArrayList<Integer> oh = new ArrayList<Integer>();
public static ArrayList<Integer> gen2()
{
ArrayList<Integer> oh = new ArrayList<Integer>();
Random random = new Random();
for (int i = 0; i < 100; i++)
{
oh.add(random.nextInt());
}
return oh;
}
public static ArrayList<Integer> insertionSort(ArrayList<Integer>oh) {
int i, j;
for (i = 1; i < oh.size(); i++) {
Integer tmp = oh.get(i);
j = i;
while ((j > 0) && (oh.get(j - 1).intValue() > tmp.intValue())) {
oh.set(j, oh.get(j - 1));
j--;
}
oh.set(j, tmp);
}
return oh;
}
public static void main(String[] args)
{
System.out.println("Original List:");
System.out.println(gen2());
System.out.println("Sorted Arraylist:");
System.out.print(insertionSort(oh));
}
publicstaticarraylist oh=newarraylist();
公共静态ArrayList gen2()
{
ArrayList oh=新的ArrayList();
随机=新随机();
对于(int i=0;i<100;i++)
{
oh.add(random.nextInt());
}
返回oh;
}
公共静态ArrayList insertionSort(ArrayListH){
int i,j;
对于(i=1;i0)和&(oh.get(j-1.intValue()>tmp.intValue()){
哦,set(j,哦,get(j-1));
j--;
}
oh.set(j,tmp);
}
返回哦;
}
公共静态void main(字符串[]args)
{
System.out.println(“原始列表:”);
System.out.println(gen2());
System.out.println(“排序数组列表:”);
系统输出打印(insertionSort(oh));
}
您正在跟踪oh变量
在gen2方法中,将其转换为
ArrayList<Integer> oh = new ArrayList<Integer>();
ArrayList oh=新的ArrayList();
对此
oh = new ArrayList<Integer>();
oh=newarraylist();
它不起作用的原因是,您声明了一个新的ArrayList(名为oh),其作用域就在gen2方法中。删除ArrayList会将新的ArrayList分配给原始的类oh引用。@user5344755:在Eclipse中(可能还有其他IDE:中),当您使用局部变量对字段进行阴影处理时,有一个设置可以为这种情况启用警告。这真的帮助了很多次!该设置位于“首选项”->“Java”->“编译器”->“错误/警告”->“名称阴影和冲突”中。@li谢谢,我不知道!