黑马程序员技术交流社区
标题:
数组问题
[打印本页]
作者:
王小刚
时间:
2012-3-25 09:59
标题:
数组问题
怎么在一个有序的数组中插入一个数,要保证这个数给还是有序的。
如有一个数组 int[] arr = {1,4,6,9,10,12,15,17} 插入一个数元素11
毕老师讲了 可以用拆半方式找到11的位置,我的问题是
位置找到了,但是怎么把这个元素插进去 , 然后让这个元素后面的元素都往后移,
要保证形成后的数组 还是有序的。
作者:
刘蕴学
时间:
2012-3-25 10:14
本帖最后由 了无尘 于 2012-3-25 13:34 编辑
使用arraycopy
System.arraycopy(源数组,起始位置,目标数组,起始位置,复制的长度)
有个需要注意的是,这里的起始位置
比如
0 1 2 3
{ 1 , 2 , 3}
数组0下标位的1,他的位置是0 到 1之间,即起始位置为0,长度为1
作者:
吴玉辉
时间:
2012-3-25 22:42
假设你通过折半,得到返回值mid,
public static void agaArray(int[] arr)//将得到的数值插入,并重新排列数组。
{
for(int x=0;x<arr.length+1;x++)
{
if(x==mid)
{
arr[x]=11;
x++;
}
}
}
我觉得思想应该是:得到插入角标后,重新遍历数组循环;但由于数组多插入了一个元素,所以数组长度需变为array.length+1;在遍历数组时,只需要判定条件将所得的角标的数组位置赋值为插入数值,之后的角标+1即可。数组本身已经是有序数组,正常对数组遍历就可以了。可话说怎么获得mid 的返回值呢?在return语句结束后,mid的值不是就被释放了吗?求高人解答。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2