三重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
-------------------------这是分割线--------------------------------
三重for循环实现对二维数组的按列排序(JavaScript)的更多相关文章
- PHP 距离我最近排序+二维数组按指定列排序
思路: 1.获取我的位置,即:我的经纬度 2.各站点须有位置 即:排序对象有位置经纬度 3.查询要排序的站点列表 4.循环遍历计算 与我的距离 5.二维数组按 指定列(距离)排序 具体如下: ...
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- PHP 按二维数组的键值排序
/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...
- PHP二维数组按某个字段排序
//准备 二维数组 //按一个字段排序 foreach($rank as $key=>$val){ $dos[$key] = $val['timelength']; } array_multis ...
- PHP开发小技巧②—实现二维数组根据key进行排序
在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...
- PHP 二维数组某个字段进行排序
/** * @param $arrUsers * @return mixed *二维数组某个字段进行排序 */ function quick_sort($arrUsers) { $sort = arr ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- Java 多维数组 按某列 排序
public MetaCell[][] getByColumn(final int columnIndex, int decisionIndex) {//[注意]final咯 ...
- PHP二维数组按照键值排序
在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...
随机推荐
- 7.pytest中的 plugin
一直想弄弄清这里的东西,一直各种因素delay,今天务必要搞搞清 一.先从官方文档上尝试去解读下什么是plugin和hook 网上有现成的对你适用的插件时候,我们可以直接pip安装,拿来使用即可:但是 ...
- Oracle中-事务-序列-视图-数据类型笔记
事务(Transaction) 事务(Transaction)是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位. 事务是为了保证数据库的完整性 在o ...
- getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
症状: SpringMVC+MyBatis向数据库插入数据,主键应用ORACLE中自己设置的自增序列会发生如下错误: nested exception is Java.sql.SQLException ...
- python进程进阶
本节目录: 1.进程的其他方法 2.验证进程之间是空间隔离的 3.守护进程 4.互斥锁 5.编写一个伪抢票程序 6.数据共享 7.for循环,join 8.队列 9.用队列完成一个生产者消费者模型 1 ...
- 简易APB4 slave实践
一个简易的(不完整的)APB4 slave的可以没有PREADY和PSLVERR,这两个信号都被赋予常数,以及没有PPROT. 两种不同类型的寄存器: 图: 普通寄存器电路图 图: 带读写控制寄存器电 ...
- 剑指offer——面试题19:正则表达式匹配
#include"iostream" using namespace std; bool MatchCore(char*str,char* pattern); bool Match ...
- js从后台取值并绑定到元素上
用ajax从后台取值不是什么有技术含量的活计,把后台取来的值绑定到Vue对象上也不算难,但每一次向后台拿数据的时候都得写上这么一段代码就十分痛苦了. 于是我写了这么一小段js代码,能够自己根据url去 ...
- JavaMail 实现发送验证码,带验证码模板的
package util; import java.io.File; import java.io.FileOutputStream; import java.util.Properties; imp ...
- CentOS下安装官方RPM包的MySQL后找不到my.cnf
PS:昨天一同事问我说他用MySQL 5.5官方的rpm包安装了,但是在/etc/下面没有my.cnf配置文件.官方rpm包安装的mysql默认确实是没有/etc/my.cnf. 为什么没有这个文件而 ...
- ps如何替换有透明图片的颜色
修改透明图片的颜色 首先用魔棒工具点选颜色区域,然后再在菜单中找到 图像-调整-替换颜色,就可以选任意想要的颜色