由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

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

三重for循环实现对二维数组的按列排序(JavaScript)的更多相关文章

  1. PHP 距离我最近排序+二维数组按指定列排序

    思路: 1.获取我的位置,即:我的经纬度 2.各站点须有位置     即:排序对象有位置经纬度 3.查询要排序的站点列表 4.循环遍历计算  与我的距离 5.二维数组按 指定列(距离)排序 具体如下: ...

  2. PHP 二维数组根据某个字段排序

    二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort  对数组的值按 ...

  3. PHP 按二维数组的键值排序

    /** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...

  4. PHP二维数组按某个字段排序

    //准备 二维数组 //按一个字段排序 foreach($rank as $key=>$val){ $dos[$key] = $val['timelength']; } array_multis ...

  5. PHP开发小技巧②—实现二维数组根据key进行排序

    在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...

  6. PHP 二维数组某个字段进行排序

    /** * @param $arrUsers * @return mixed *二维数组某个字段进行排序 */ function quick_sort($arrUsers) { $sort = arr ...

  7. Java一维与二维数组的拷贝与排序

    Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...

  8. Java 多维数组 按某列 排序

        public MetaCell[][] getByColumn(final int columnIndex, int decisionIndex) {//[注意]final咯          ...

  9. PHP二维数组按照键值排序

    在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...

随机推荐

  1. eclipse项目目录展示结构设置

    我因为前后端都搞过, 解除过很多的开发IDE,说真的,很多的项目目录结构都是一级一级分开,然后我可以通过展开等操作来查看文件等资源信息,结果呢?java的开发IDE eclipse默认的项目目录展示简 ...

  2. 【http协议】浅谈

    [http协议]浅谈 一. 概述 http,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议. 请求与响应: 客户端发送请求,服务器端响应数 ...

  3. spider_keeper

    一 简介 spider_keeper 是一款开源的spider管理工具,可以方便的进行爬虫的启动,暂停,定时,同时可以查看分布式情况下所有爬虫日志,查看爬虫执行情况等功能. 二 安装 部署 安装环境 ...

  4. http、tcp及从请求到渲染的过程

    http.tcp及从请求到渲染的过程 https://blog.csdn.net/pambassador/article/details/88539478 http请求的结构内容 https://ww ...

  5. Q438 找到字符串中所有字母异位词

    给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100. 说明: ...

  6. Domain 表达式的用法

    什么是Domain [('create_uid','=',user.id)] Domain是个多条件的列表,每个条件是一个三元表达式:[(字段名,操作符,值), (字段名,操作符,值)] Domain ...

  7. DB link的迁移

    我们在做某些Schema的迁移的时候,由于用到Public的db link,然而由于不知道db link中目标端账号的密码,因此无法在新环境重新创建DB link. 本次实验的思路是将视图dba_db ...

  8. java BufferedImage 合成多张图片 - 因为JPEGImageEncoder 不能用

    java BufferedImage 合成多张图片 public void createPicTwo2(int x,int y) {     try     {       //读取第一张图片    ...

  9. MongoDB数据库初探 --- 认识与安装 && Mongoose安装

    注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃. 第一部分: MySQL数据库是关系型数据库,但是使用node开发时多用MongoDB数据库,两者各有优势,所 ...

  10. Jmeter运行badboy录制的脚本

    前言 进行性能测试的站点为:在本地搭建的bugfree 一.badboy录制脚本 1.启动bugfree服务 2.打开badboy进行脚本录制 2.1.打开badboy,按下启动录制按钮,在地址栏中输 ...