当前位置: 代码迷 >> Java相关 >> 插入法排序法出错。不能实排序功能
  详细解决方案

插入法排序法出错。不能实排序功能

热度:118   发布时间:2007-11-10 20:50:52.0
插入法排序法出错。不能实排序功能

输出时还是按输入时的顺序输出,请帮我看一下是哪里出了问题。谢谢。。。

import java.io.*;
public class Sort
{
public static void main(String args[])
{
int number[]=new int[10];
int index;
String s="";
for(int i=0;i<number.length;i++)
{

System.out.print("请输入10个数字:");

try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();

}
catch(IOException e){}


index=Integer.parseInt(s);

number[i]=index;

}
for(int i=1;i<number.length;i++)
{
for(int j=i;j>10;j--)
{
if(number[j]<number[j-1])
{
int temp;
temp=number[j-1];
number[j-i]=number[j];
number[j]=temp;

}
}
}
System.out.println("插入排序数的结果是:");
for(int i=0;i<number.length;i++)
{
System.out.print(number[i]+" ");
}
}
}

搜索更多相关的解决方案: public  import  插入法  color  

----------------解决方案--------------------------------------------------------
for(int i=1;i<number.length;i++)
{
for(int j=i;j>10;j--)
{
if(number[j]<number[j-1])
{
int temp;
temp=number[j-1];
number[j-i]=number[j];
number[j]=temp;

}
}
}
着是什么循环?冒泡排序 是for(int j=i;j<10;j++)
----------------解决方案--------------------------------------------------------
for(int i=1;i<number.length;i++)
{
for(int j=i;j>0;j--)
{
if(number[j]<number[j-1])
{
int temp;
temp=number[j-1];
number[j-i]=number[j];
number[j]=temp;

}
}
}

改了出现如下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -4
at Sort.main(Sort.java:36)

请问下这个是错误是什么意思?

[此贴子已经被作者于2007-11-10 21:19:23编辑过]


----------------解决方案--------------------------------------------------------

数组越界刚没看你循环体里的函数这样写
for(int i=0;i<number.length-1;i++)
{
for(int j=i+1;j<10;j++)
{
if(number[j]<number[i])
{
int temp;
temp=number[j];
number[j]=number[i];
number[i]=temp;

}
}
}

[此贴子已经被作者于2007-11-10 21:26:50编辑过]


----------------解决方案--------------------------------------------------------


for(int i=1;i<number.length;i++)
{
for(int j=i;j>0;j--)
{
if(number[j]<number[j-1])
{
int temp;
temp=number[j-1];
number[j-i]=number[j];
number[j]=temp;

}
}
}
用我上面的这种写法是上面的数组是哪里错了。。
麻烦帮我改一下。。是哪里地方 谢谢

[此贴子已经被作者于2007-11-10 21:28:52编辑过]


----------------解决方案--------------------------------------------------------

好的10秒钟


----------------解决方案--------------------------------------------------------

import java.io.*;
public class Sort
{
public static void main(String args[])
{
int number[]=new int[10];
int index;
String s="";
for(int i=0;i<number.length;i++)
{

System.out.print("请输入10个数字:");

try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();

}
catch(IOException e){}


index=Integer.parseInt(s);

number[i]=index;

}
for(int i=0;i<number.length;i++)
{
for(int j=i+1;j<10;j++)
{
if(number[j]<number[i])
{
int temp;
temp=number[j];
number[j]=number[i];
number[i]=temp;

}
}
}

System.out.println("插入排序数的结果是:");
for(int i=0;i<number.length;i++)
{
System.out.print(number[i]+" ");
}
}
}
这个在不对 说明你机器有问题了


----------------解决方案--------------------------------------------------------
哦。。那用下面的这种方法上面的数组应该怎么定义?这是插入法排序
for(int i=1;i<number.length;i++)
{
for(int j=i;j>0;j--)
{
if(number[j]<number[j-1])
{
int temp;
temp=number[j-1];
number[j-i]=number[j];
number[j]=temp;

}
}
}

----------------解决方案--------------------------------------------------------

收到 你这句话逻辑错误
number[j-i]=number[j];
应该是number[j-1]=number[j];


----------------解决方案--------------------------------------------------------

真是大意。谢谢。。。

[此贴子已经被作者于2007-11-10 22:32:18编辑过]


----------------解决方案--------------------------------------------------------