java程序找错,请高手帮忙,简单的小程序

publicclass插入排序{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generat... public class 插入排序 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//int len=8;

int arr[]={1,2,8,7,4,3};

InsertSort is=new InsertSort();
is.sort(arr);

}
}

class InsertSort {
public void sort(int arr[])
{
for(int i=1;i<arr.length;i++){
int InsertVal=arr[i];
int Index=i-1;
while(Index>=0&&InsertVal<arr[Index]){
arr[i]=arr[Index];
Index--;
}
arr[Index+1]=InsertVal;

System.out.print(arr[Index]);
}

}

}

编译结果是 12222
我不理解哪错了,请帮帮忙
此程序写的是插入排序
展开
 我来答
两厢遗忘
2012-04-11 · TA获得超过629个赞
知道小有建树答主
回答量:739
采纳率:0%
帮助的人:563万
展开全部
能先说说你要做什么吗
更多追问追答
追问
补充了,是插入排序
追答
在换值的时候用临时变量接收一下、、、
小小_神乐
2012-04-11 · 超过27用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:80.1万
展开全部
public static void sort(int arr[]) {
for (int i = 1; i < arr.length; i++) {
int InsertVal = arr[i];
int Index = i - 1;
while (Index >= 0 && InsertVal < arr[Index]) {
arr[Index+1] = arr[Index]; //你这里有问题 自己看吧 改成我这样就行了
Index--;
}
arr[Index + 1] = InsertVal;
// 0System.out.print(arr[Index]);
}
}
更多追问追答
追问
为什么arr[Index + 1]和 arr[i]不等价吗
前面有定义啊int Index = i - 1;
追答
当你Index-- 的时候  你的代码中arr[i]=arr[Index]; 中的i也会减减么? arr[Index+1] = arr[Index]; 这个要实现的是当Index-- 的时候 两个下标同时减小1啊  懂了么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侦探小柯
2012-04-12 · TA获得超过182个赞
知道答主
回答量:439
采纳率:0%
帮助的人:119万
展开全部
看着头晕。。比较8和7的时候进入while循环。。里面出错,你自己循环循环就知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式