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
我不理解哪错了,请帮帮忙
此程序写的是插入排序 展开
/**
* @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
我不理解哪错了,请帮帮忙
此程序写的是插入排序 展开
3个回答
展开全部
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]);
}
}
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啊 懂了么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看着头晕。。比较8和7的时候进入while循环。。里面出错,你自己循环循环就知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询