
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;
}
} 展开
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;
}
} 展开
3个回答
展开全部
while(arr[j]>temp&&j>=0)
问题出在这一行,将这两个条件的顺序改一下。
while( j >= 0 && arr[j]>temp )
现在的情况是,当j为0时,循环内执行j--,j的值变为-1。
然后在条件判断中就变成了 arr[-1] > temp
于是下标溢出。
问题出在这一行,将这两个条件的顺序改一下。
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]
j >= 0 然后才能使用 arr[j]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(arr[j]>temp&&j>=0)
{
arr[j+1]=arr[j];
j--;
}
j = 0的时候 ,循环之后j-- 有可能等于-1
arr[-1] 问题不少
{
arr[j+1]=arr[j];
j--;
}
j = 0的时候 ,循环之后j-- 有可能等于-1
arr[-1] 问题不少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询