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);
    
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog