关于选择排序
还有0人有此问题
发表在Java视频课程答疑 2020-02-18
是否精华
版块置顶:

public class Dome1 {

    public static void main(String[] args) {


        int a[]= {99,86,12,31,45,29,61,22};

        int index=0;

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

       

        for ( int j=1; j<a.length-i ;j++) {

        if ( a[index]>a[j]) {

        index=j;

        }

        }

        int tmp=a[a.length-i];

        a[a.length-i]=index;

        index=tmp;

        }

        System.out.println("选择排列结果为:");

        for ( int tmp:a) {

        System.out.print(tmp+" ");

        }

        

}

}

问一下,那里错了啊

分享到:
精彩评论 3
ywfpclt
学分:577 LV6
2020-02-19
沙发

a[index]

index = tmp;

应该是这两句冲突了吧,下标和值搞混了

ywfpclt
学分:577 LV6
2020-02-19
板凳

         a[a.length-i]=index;

         index=tmp;

改成

         a[a.length-i]=a[index];

         a[index]=tmp;

目测应该就可以了

你试试看

ywfpclt
学分:577 LV6
2020-02-19
地板

我想了想又改了下,觉得这样效果比较好,循环次数要少一点

        for ( int i=0; i<a.length; i++) {

                 int index=i;

         for ( int j=i+1; j<a.length-i ;j++) {

         if ( a[index]<a[j]) {

         index=j;

         }

         }

         if(index>i){

         int tmp=a[i];

         a[i]=a[index];

         a[index]=tmp;

          }

        }


首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照