标题:插入法排序法出错。不能实排序功能
只看楼主
流星阿勇
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-1
 问题点数:0 回复次数:9 
插入法排序法出错。不能实排序功能

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

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 
2007-11-10 20:50
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
得分:0 
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++)

2007-11-10 20:59
流星阿勇
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-1
得分:0 
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编辑过]


我是菜鸟,但我会一直努力。。。相信总有一天会成功。。。
2007-11-10 21:12
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
得分:0 

数组越界刚没看你循环体里的函数这样写
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编辑过]


2007-11-10 21:21
流星阿勇
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-1
得分:0 


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编辑过]


我是菜鸟,但我会一直努力。。。相信总有一天会成功。。。
2007-11-10 21:26
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
得分:0 

好的10秒钟


2007-11-10 21:27
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
得分: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=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]+" ");
}
}
}
这个在不对 说明你机器有问题了


2007-11-10 21:28
流星阿勇
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-1
得分:0 
哦。。那用下面的这种方法上面的数组应该怎么定义?这是插入法排序
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:32
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
得分:0 

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


2007-11-10 21:47
流星阿勇
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-1
得分:0 

真是大意。谢谢。。。

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


我是菜鸟,但我会一直努力。。。相信总有一天会成功。。。
2007-11-10 22:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-185107-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051138 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved