输出时还是按输入时的顺序输出,请帮我看一下是哪里出了问题。谢谢。。。
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]+" ");
}
}
}
----------------解决方案--------------------------------------------------------
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编辑过]
----------------解决方案--------------------------------------------------------