• 三重for循环实现对二维数组的按列排序(JavaScript)


    由C语言联想到的:三重for循环实现对二维数组的按列排序,并且牵扯到数据结构。

    自己写的,水平有限,本文属于原创,可能存在错误,忘指正~

    function circle()
    {
        var a = [
            [1, 4, 3, 2],
            [8, 6, 5, 7],
            [3, 7, 2, 5],
            [4, 8, 6, 1]
        ], t = 0, i, j, k;
    
        for(i = 0;i < 4;i++)
        {
            for(j = 0;j < 3;j++)
            {
                for(k = j + 1;k < 4;k++)
                {
                    if(a[j][i] > a[k][i])
                    {
                        t = a[j][i];
                        a[j][i] = a[k][i];
                        a[k][i] = t;
                    }
                }
            }
        }
    
        console.log('对角线上元素的值为:');
        for(i = 0;i < 4;i++)
        {
            console.log(a[i][i]); // 输出对角线上的元素值
        }
    
        console.log("排序后的元素:");
        for(i = 0;i < 4;i++)
        {
            var link = '{';
            for(j = 0;j < 4;j++)
            {
                link += a[i][j];
                if(j < 3)
                    link += ','
            }
            console.log(link + '}');
        }
    }
    
    circle();

     运行结果:

    内部循环的原理是利用选择法:

     1. 首先顺序执行for循环,执行到最里面的那个循环之后,一直循环最里面的那个循环,然后跳入从内到外的倒数第二个循环中,一直循环。这时候,数组的第一行第一个元素与其余所有行的第一个元素进行了比较,把剩余的最小的依次放到前面。

    2. 以此类推,直到所有每一行的第一个元素的排序是从小到大的 

    按照数组下标进行比对就是:

    a[0][0] >(此处是进行比较) a[1][0] a[2][0] a[3][0]

    a[1][0] >(...同上) a[2][0] a[3][0]

    a[2][0] >(...) a[3][0]

    Chrome浏览器加断点,很容易大家去调试:【在你想调试的代码前面点一下,出现蓝色的标签,然后刷新一下页面,点击单步执行,就可以看到程序执行和相应的变量的变化了!】

    3.跳入最外层循环, i加1

    比较的下标为:

    a[j][i] >(...) a[k][i]

    01  11 21 31

    11  21 31

    21  31

    02  12 22 32

    12  22

    22  32

    03  13 23 33

    13  23

    23  33

    -------------------------这是分割线--------------------------------

  • 相关阅读:
    Field 'id' doesn't have a default value错误解决方法
    jQuery:详解jQuery中的事件(一)
    Javascript:Javascript数据类型详解
    CSS:CSS样式表及选择器优先级总结
    Javascript:JSON总结
    CSS:CSS使用Tips
    Git:Git初体验——Git安装配置
    CSS:使用CSS媒体查询创建响应式布局
    多人操作sqlite3数据库冲突问题解决方法
    c++获取sqlite3数据库表中所有字段的方法
  • 原文地址:https://www.cnblogs.com/lqcdsns/p/6914642.html
Copyright © 2020-2023  润新知