使用ArrayList的android java insertsort

使用ArrayList的android java insertsort,java,android,algorithm,sorting,arraylist,Java,Android,Algorithm,Sorting,Arraylist,首先,我正在编写程序,以便在Android上可视化排序算法 我为插入排序算法编写了方法。我正在使用MPAndroidChart void insertionSort(int[] arr) { int i, j, newValue; for (i = 1; i < arr.length; i++) { newValue = arr[i]; j = i; while (j > 0 && arr[j -

首先,我正在编写程序,以便在Android上可视化排序算法 我为插入排序算法编写了方法。我正在使用MPAndroidChart

    void insertionSort(int[] arr) {
    int i, j, newValue;
    for (i = 1; i < arr.length; i++) {
        newValue = arr[i];
        j = i;
        while (j > 0 && arr[j - 1] > newValue) {
            arr[j] = arr[j - 1];
            j--;
        }
        arr[j] = newValue;
    }
}
void insertionSort(int[]arr){
int i,j,新值;
对于(i=1;i0&&arr[j-1]>newValue){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}
…而且效果很好。我想使用ArrayList重新设计它以获得相同的结果,但不幸的是,它崩溃了,我不知道为什么!这是我的收集方法insertionSort:

void insertionSort(ArrayList<BarEntry> list) {
    int i, j;
    float newValue;
    for (i = 1; i < list.size(); i++) {
        newValue = list.get(i).getY();
        j = i;
        while (j > 0 && list.get(j-1).getY() > newValue) {
            list.set(j, list.get(j-1));
            j--;
        }
        BarEntry be = list.get(list.indexOf(newValue));
        list.set(j, be);
    }
}
void insertionSort(数组列表){
int i,j;
浮动新值;
对于(i=1;i0&&list.get(j-1.getY()>newValue){
list.set(j,list.get(j-1));
j--;
}
BarEntry be=list.get(list.indexOf(newValue));
列表集(j,be);
}
}
BarEntry是用于创建图表的类。我想按Y坐标对数据进行排序,这是通过getY()函数完成的。程序在那里关闭:

BarEntry be=list.get(list.indexOf(newValue)); 列表集(j,be)

简而言之: 我怎样才能替换

arr[j]=新值

要使用这种收集方法(不起作用):

set(j,list.get(list.indexOf(newValue))

来自java文档

public void add(int index, E element)
在此列表中的指定位置插入指定元素。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将一个元素添加到其索引中)


因此无需移动数组的其余部分。

您从
列表中取出了
newValue
。获取(i)
,并且
i
自那以后一直没有更改,因此我相信您可以再次这样做:

    BarEntry be = list.get(i);
我还没有测试


我想发生的事情是:
newValue
是您移动的
BarEntry
中的y值,它不是整个
BarEntry
。因此
list.indexOf(newValue)
找不到元素并返回
-1
<代码>列表。获取(-1)不起作用。你的应用程序崩溃。

我不知道该如何帮助我。你收到异常消息了吗?stacktrace?不,当我点击按钮调用我的方法时,我的应用程序刚刚重新启动。谢谢!这就是解决办法!很高兴知道。也请看谢谢。