A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求解啊,以下是程序
import java.util.Arrays;
public class lun {


public static void main(String[] args) {

int[] arr = {5,6,9,44,2};

for(int i=1;i<arr.length;i++){


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

}
//
System.out.println(Arrays.toString(arr));
}


}

6 个回复

正序浏览
数组越界了!
回复 使用道具 举报
数组越界了,你的外循环和内循环数组长度都应该减一。冒泡的规则是两两比较,你dabug调试一下会更深刻
回复 使用道具 举报
1、排序的换位记不住就记得如图的两个/
回复 使用道具 举报
  1. package pack;

  2. import java.util.Arrays;
  3. public class test {
  4. public static void main(String[] args) {
  5.         int[] arr = {5,6,9,44,2};
  6.         int tmp;
  7.         for(int i=0;i<arr.length-1;i++){
  8.                
  9.                 for(int j=0;j<arr.length-i-1;j++)
  10.                 {
  11.                         if(arr[j]>arr[j+1])
  12.                         {
  13.                                 tmp = arr[j+1];
  14.                                 arr[j+1]=arr[j];
  15.                                 arr[j]=tmp;
  16.                         }       
  17.                 }
  18.         }
  19. //
  20. System.out.println(Arrays.toString(arr));
  21. }
  22. }
复制代码
标准的代码如上,你应该选择<>这个按钮加入代码1、排序的换位,
tmp=y;
y=x;
x=tmp;
记不住就认准第一行的y到第二行的y,第二行的x到第二行的x是个斜线/
2、你的tmp是一个被赋值的量,所以它初始化与否没有关系,更没必要一遍遍的在第一个for循环里重复初始化,所以放在数组那边,只用定义就好
3、你内存溢出的问题,5,6,9,44,2,这是五个数字,数组的长度是5,其中的元素下标依次为0,1,2,3,4,
你的arr[x]给在最后会变成arr[4]=arr[5];但是问题是原数组最后个的就是arr[4]=2;arr[5]不存在,自然内存崩了
4、排序的外循环一般用于计算次数,内循环才是每一次的交换的值,arr[x]来作为交换的值,思考的方式就欠妥
回复 使用道具 举报
数组下标是从0开始的,所以你a[0]就没有执行到
回复 使用道具 举报
package pack;

import java.util.Arrays;
public class test {
public static void main(String[] args) {
        int[] arr = {5,6,9,44,2};
        for(int i=0;i<arr.length;i++){
                int tmp =0;
                for(int j=0;j<arr.length-i-1;j++)
                {
                        if(arr[j]>arr[j+1])
                        {
                                tmp = arr[j+1];
                                arr[j+1]=arr[j];
                                arr[j]=tmp;
                        }       
                }

        }
//
System.out.println(Arrays.toString(arr));
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马