数组的排序问题(很菜,但我不会啊。),帮帮我。

flyingfz 2004-04-15 10:52:51
这段程序哪错了啊,我想用冒泡法实现排序,但运行后出现数组边界错误。
class paixu{
public static void main(String s[]){
int a[]={10,24,8,12,32,56,78,45,26,6};
int temp,m;
m=a.length;
for(int i=0;i<m;i++){
for(int j=1;j<=m-j;j++){
if(a[i]<a[i+1]){
temp=a[i+i];
a[i+1]=a[i];
a[i]=temp;
}

}
}
for(int j=0;j<=10;j++){
System.out.println(a[j]);
}
}

}
...全文
62 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dongluo 2004-04-16
  • 打赏
  • 举报
回复
class paixu{
public static void main(String s[]){
int a[]={10,24,8,12,32,56,78,45,26,6};
int temp,m;
m=a.length;
for(int i=0;i<m;i++){
for(int j=i+1;j<m;j++){
if(a[i]>a[j]){
temp=a[j];
a[j]=a[i];
a[i]=temp;
}

}
}
for(int j=0;j<10;j++){
System.out.println(a[j]);
}
}

}
zijibense 2004-04-16
  • 打赏
  • 举报
回复
赞成 satangf(好好学习,天天向上!)
satangf 2004-04-16
  • 打赏
  • 举报
回复
class paixu {
public static void main(String s[]) {
int a[] = {
10, 24, 8, 12, 32, 56, 78, 45, 26, 6};
int temp, m;
m = a.length;
for (int i = 1; i < m; i++) { //i从1开始
for (int j = 0; j < m - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
for (int j = 0; j < m; j++) {
System.out.println(a[j]);
}
}
}
jinbuquan 2004-04-16
  • 打赏
  • 举报
回复
程序我不看了,如果您只是需要排序功能,而不是自我练习,建议您使用java.util.Arrays的sort方法。
mars_han 2004-04-16
  • 打赏
  • 举报
回复
ai92(抵制日货!!) 对喽。
ai92 2004-04-16
  • 打赏
  • 举报
回复
很明显,
在i或j加一的时候,已经到了数组的最后一个的后面了
caiyanying732 2004-04-16
  • 打赏
  • 举报
回复
学习来了
DESL 2004-04-16
  • 打赏
  • 举报
回复
上面朋友使用的是冒泡法.
你可以看一些算法的书.
这个是比较简单的算法.
masakiyy 2004-04-16
  • 打赏
  • 举报
回复
class Paixu{
public static void main(String s[]){
int a[]={10,24,8,12,32,56,78,45,26,6};
int temp,m;
m=a.length;
for(int i=0;i<m-1;i++){
for(int j=0;j<m-i;j++){
if(a[j]<a[j+1]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(int j=0;j<m;j++){
System.out.println(a[j]);
}
}
}

flyingfz 2004-04-16
  • 打赏
  • 举报
回复
谢谢大家了。
不过,上述代码编译后运行仍然出现数组边界错误啊。
chanceqw 2004-04-15
  • 打赏
  • 举报
回复
唉 真是乱啊,我帮你重写得了
class Paixu{
public static void main(String s[]){
int a[]={10,24,8,12,32,56,78,45,26,6};
int temp,m;
m=a.length;
for(int i=0;i<m;i++){
for(int j=0;j<m-i;j++){
if(a[j]<a[j+1]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(int j=0;j<m;j++){
System.out.println(a[j]);
}
}
}
chanceqw 2004-04-15
  • 打赏
  • 举报
回复
for(int j=0;j<=10;j++){
^^^^^^^^^一共11个,下标越界
System.out.println(a[j]);
}
chanceqw 2004-04-15
  • 打赏
  • 举报
回复
if(a[i]<a[i+1]){
temp=a[i+i];
^^^^^^temp=a[i+1];
a[i+1]=a[i];
a[i]=temp;

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧