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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

张海龙

初级黑马

  • 黑马币:0

  • 帖子:14

  • 精华:0

© 张海龙 初级黑马   /  2013-6-27 23:22  /  1118 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test1{
        public static void main(String[] args){
                int[] arr={2,3,4,7,34,56,78,23,34};
                selectSort(arr);
                printarry(arr);

        }
        public static void selectSort(int[] arr){
                for(int i=0;i<arr.length-1;i++){
                        for(int j=i+1;i<arr.length;j++){
                                if(arr[i]>arr[j])
                                int temp=arr[i];
                                arr[i]=arr[j];
                                arr[j]=temp;
                        }  
                }
        }
        public static void printarry(int[] arr){
                for(int i=0;i<arr.length;i++)
                        if(i!=arr.length-1)
                                System.out.print(arr[i]+",");
                        else
                                System.out.println(arr[i]);
                }
}
为什么运行时会出错呢

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
神之梦 + 1 + 3 神马都是浮云

查看全部评分

4 个回复

倒序浏览
  1. public class Test{
  2.     public static void main(String[] args){
  3.             int[] arr={2,3,4,7,34,56,78,23,34};
  4.             selectSort(arr);
  5.             printarry(arr);

  6.     }
  7.     public static void selectSort(int[] arr){
  8.             for(int i=0;i<arr.length-1;i++){
  9.                     for(int j=i+1;j<arr.length;j++){
  10.                             if(arr[i]>arr[j]){
  11.                                     int temp=arr[i];
  12.                                     arr[i]=arr[j];
  13.                                     arr[j]=temp;
  14.                             }
  15.                     }  
  16.             }
  17.     }
  18.     public static void printarry(int[] arr){
  19.             for(int i=0;i<arr.length;i++)
  20.                     if(i!=arr.length-1)
  21.                             System.out.print(arr[i]+",");
  22.                     else
  23.                             System.out.println(arr[i]);
  24.             }
  25. }
复制代码
以上是调试后正确的程序,楼主程序里有两个错误,里层for循环的循环条件i的 i 应该改成 j ,if语句下面的三条交换数组元素的位置的语句应该加上大括号

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
神之梦 + 1 + 3 很给力!

查看全部评分

回复 使用道具 举报
补充:两个问题都是selectSort方法里的
回复 使用道具 举报
接选择排序算法的思想比较简单:(假设数据放在一个数组a中,且数组的长度是N)

  1:从a[0]-a[N-1]中选出最小的数据,然后与a[0]交换位置

  2:从a[1]-a[N-1]中选出最小的数据,然后与a[1]交换位置(第1步结束后a[0]就是N个数的最小值)

  3:从a[2]-a[N-1]中选出最小的数据,然后与a[2]交换位置(第2步结束后a[1]就是N-1个数的最小值)

  以此类推,N-1次排序后,待排数据就已经按照从小到大的顺序排列了。

代码我就不写了。。你的问题楼上也给你解决了,写这些希望能够帮助你更加理解选择排序。

评分

参与人数 1黑马币 +2 收起 理由
张勇1993 + 2

查看全部评分

回复 使用道具 举报
谢谢呀,刚刚我试了试,通过了,再次谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马