weixin_44647325 2019-04-10 15:47 采纳率: 20%
浏览 255

有没有大神看一下代码,看的出是一个排序用的,但是最近才接触编程逻辑很混乱,能不能帮忙一步步分析一下?

public class sortClass {

public static void sort(int[] data) {
        for(int j = 0; j<data.length - 1; j++) {
            int m=j ;
            for (int k = j + 1; k < data.length; k++) {
                if (data[k]< data[m]) {           
                m= k;
                /*compare values*/
                }
            }
                /*Assign to temp*/
            int temp = data[m];           
            data[m] = data[j];
            data[j] = temp;

        }
    }
    public static void main(String[] args) {
        int []  a   = {6,3,2,5,4,1};
        sort(a);

    }

}

  • 写回答

2条回答 默认 最新

  • 泡视界 2019-04-10 16:14
    关注
    public class sortClass {
    
    public static void sort(int[] data) {
            for(int j = 0; j<data.length - 1; j++) {//循环n次,比如代码里a有6个数,这就循环6次
                int m=j ;                                         //m用来记录从第j个数开始往后所有数中最小的数的索引,也就是index,
                for (int k = j + 1; k < data.length; k++) {//对于每一个j,循环n-1次,比如j循环6次,那这个内循环就循环6*(6-1)次
                                    if (data[k]< data[m]) {                //判断从第j个数后面所有数字是否小于第j个数           
                                            m= k;                                     //如果第j个数后面的数比较小,那就记录这个较小的数的引索
                    /*compare values*/
                    }
                }                                                      //内层循环到这结束,目的在于找到第j个数后面,最小的数的引索
                    /*Assign to temp*/
                             //找到后面最小的数,那就可以交换两个数,这样,小的就在前,大的就在后了。以下三句实现了交换这两个数的功能。           
                            int temp = data[m];                     //用temp记录 data[m]的值,也就是较小的值
                data[m] = data[j];                        //data[m]的值被temp存下了,那它现在就可以存较大的数,以实现交换,于是存 data[j]
                data[j] = temp;                            //data[j]原来的值已经给data[m],那现在就可以存较小的值了,于是存了temp
    
            }
        }
            //外层循环在这结束。为啥要外层循环呢?
            //因为,内层循环只能实现从某一个数开始,找到后面最小值,并把他俩交换。那就需要在一层循环,把这个操作套用到所有的值上。
            //于是所有的值都取找它后面最小值并与其交换。这样就实现了排序
        public static void main(String[] args) {
            int []  a   = {6,3,2,5,4,1};
            sort(a);
    
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能