java插入排序,说我java.lang.ArrayIndexOutOfBoundsException,但我检查了一下发现我的数组并没有溢出啊

//前面定义过一个intarr【】的数组publicvoidinsertsort(){for(inti=1;i<arr.length;i++){intj=i-1;intt... //前面定义过一个int arr【】的数组
public void insertsort()
{
for(int i=1;i<arr.length;i++)
{
int j=i-1;
int temp=arr[i];
while(arr[j]>temp&&j>=0)
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=temp;
}
}
展开
 我来答
isc039
推荐于2016-04-11 · TA获得超过7.8万个赞
知道小有建树答主
回答量:744
采纳率:0%
帮助的人:439万
展开全部
while(arr[j]>temp&&j>=0)

问题出在这一行,将这两个条件的顺序改一下。

while( j >= 0 && arr[j]>temp )

现在的情况是,当j为0时,循环内执行j--,j的值变为-1。
然后在条件判断中就变成了 arr[-1] > temp
于是下标溢出。
匿名用户
2014-09-12
展开全部
程序流程对不对我没细看 但是这一句 while(arr[j]>temp&&j>=0) 肯定是不行的 , 你应该先判断

j >= 0 然后才能使用 arr[j]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自太阳de外星人
2014-09-12 · TA获得超过297个赞
知道小有建树答主
回答量:650
采纳率:80%
帮助的人:189万
展开全部
while(arr[j]>temp&&j>=0)
{
arr[j+1]=arr[j];
j--;
}

j = 0的时候 ,循环之后j-- 有可能等于-1
arr[-1] 问题不少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式