使用ArrayList的android java insertsort
首先,我正在编写程序,以便在Android上可视化排序算法 我为插入排序算法编写了方法。我正在使用MPAndroidChart使用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 -
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?不,当我点击按钮调用我的方法时,我的应用程序刚刚重新启动。谢谢!这就是解决办法!很高兴知道。也请看谢谢。