我正在尝试按排序顺序将元素添加到数组中。
这是我的代码:
public class SortedInsertion {
public static void main(String[] args) {
int[] arr=new int[6];
arr[0]=5;
arr[1]=6;
arr[2]=9;
arr[3]=11;
System.out.println(Arrays.toString(arr));
insert(7,arr);
}
public static void insert(int val,int[] arr){
int i;
for(i=0;i<arr.length-1;i++){
if(arr[i]>val)
break;
}
for(int k=i;k<arr.length-1;k++){
arr[k+1]=arr[k];
arr[i]=val;
}
System.out.println(Arrays.toString(arr));
}
}
我得到的输出为:
[5,6,9,11,0,0]
[5,6,7,9,9,9]
但正确的输出是
5,6,9,11,0,0
5,6,7,9,11,0
您可以使用数组或集合二元搜索函数来获取插入新值的位置,您需要将所有元素从该位置(如果有)向右移动
int position = Math.abs(Collections.binarySearch(sortedList, key)) - 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)