【总结】JS里的数组排序
虽然贴了2种办法,但是思路是一致的,都是先从数组里找出最小值,一种是找到一个放进新数组;
另一种是找到后和第i个数交换,i每次自增
主要用到2个函数:
- 从一个数组里找出最小值;
- 两个元素互换位置
function findMin(arr,start){//第二个参数是标明从第几位开始找
var n = arr[start];
var index =0;
for(var i=start; i<arr.length; i++){
if(arr[i]<=n){
n = arr[i];
index = i;
}
}
return index;
}
function findMin2(arr){//这个默认从第0位开始找
var n = arr[0];
var index =0;
for(var i=0; i<arr.length; i++){
if(arr[i]<=n){
n = arr[i];
index = i;
}
}
return index;
}
var arr =[3,5,1,8,39,4];
//alert(findMin(arr,3));
//方法一,先找最小值,跟第一个换位置,再找第二小,和第二位对换位置,一次类推
function mySort2(arr){
var mid =0;
for(var i=0; i<arr.length; i++){
mid = arr[i];
arr[i]= arr[findMin(arr,i)];
arr[findMin(arr,i)]= mid;
}
return arr;
}
//alert(mySort2(arr));
//方法二:定义一个新数组,每次循环的时候找到最小值,把这个最小值push到新数组里,再把这个数从原数组中删除。
function mySort3(arr){
var newArr =[];
for(var i=0; i<arr.length; i++){
newArr.push(arr[findMin2(arr)]);//这个findMin2是不用传第二个参数的
arr.splice(findMin2(arr),1);
i--;
}
return newArr;
}
alert(mySort3(arr));
【总结】JS里的数组排序的更多相关文章
- JS二维数组排序组合
需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...
- PHP中的__toString方法(实现JS里的链式操作)
_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错 Catchable fatal error: Object of class String could not be co ...
- 理解 Node.js 里的 process.nextTick()
有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...
- chart.js 里添加图表的清单:
chart.js 里添加图表的清单: var legend = myDoughnut.generateLegend(); $("#chart_legend").html(legen ...
- js笔记——js里var与变量提升
var是否可以省略 一般情况下,是可以省略var的,但有两点值得注意: 1.var a=1 与 a=1 ,这两条语句一般情况下作用是一样的.但是前者不能用delete删除.不过,绝大多数情况下,这种差 ...
- js里cookie操作
原生js操作cookie 创建和存储 cookie 在这个例子中我们要创建一个存储访问者名字的 cookie.当访问者首次访问网站时,他们会被要求填写姓名.名字会存储于 cookie 中.当访问者再次 ...
- JS里设定延时:js中SetInterval与setTimeout用法
js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...
- js里function的apply vs. bind vs. call
js里除了直接调用obj.func()之外,还提供了另外3种调用方式:apply.bind.call,都在function的原型里.这3种方法的异同在stackoverflow的这个答案里说的最清楚, ...
- js里各浏览器解析XML,支持IE、火狐、Chrome等
js在chrome中加载XML,js加载XML支持ff,IE6+,Opera等浏览器 见代码: <!doctype html> <html lang="en"&g ...
随机推荐
- codeforces 651C(map、去重)
题目链接:http://codeforces.com/contest/651/problem/C 思路:结果就是计算同一横坐标.纵坐标上有多少点,再减去可能重复的数量(用map,pair存一下就OK了 ...
- mysql登录不了及修改密码
安装mariadb,默认是无密码的,但一般是指要设置密码的.在设置密码时出现各种问题,可能还是不太明白其原理. 一下我尝试了两种方法,但都失败了.下面这两个是我尝试的方法: 一.网上最多的方法是 1. ...
- 一道google面试题
输入n,把1-n分成两个和相等的子集,有多少种分法 想了个dp,直接背包也行 #include <iostream> #include <cstdio> using names ...
- 使用ActionBar Tab
使用ActionBar Tab(地址) 本文实现将页面分为多个选项卡,并在每一个选项卡中显示一个ListView. 创建新Layout - ActionbarTab.axml, 并向页面中添加Fram ...
- 如何使用Python3.4连接MySQL
http://www.tuicool.com/articles/yqayEv import pymysql conn = pymysql.connect(host='localhost', port= ...
- tcp传送xml
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.i ...
- 利用spring AOP 和注解实现方法中查cache-我们到底能走多远系列(46)
主题:这份代码是开发中常见的代码,查询数据库某个主表的数据,为了提高性能,做一次缓存,每次调用时先拿缓存数据,有则直接返回,没有才向数据库查数据,降低数据库压力. public Merchant lo ...
- MyBatis笔记
Mybatis:将java对象映射成SQL语句,再将结果转化为java对象,解决了java对象和sql拼接.结果集的问题,又可以自己写sql语句 总体结构: 根据JDBC规范建立与数据库的连接 通过反 ...
- Hadoop集群搭建安装过程(二)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(二)(配置SSH免密登录)(图文详解---尽情点击!!!) 一.配置ssh无密码访问 ®生成公钥密钥对 1.在每个节点上分别执行: ssh-keygen -t rsa(一 ...
- php查询文件扩展名
//查询文件扩展名 function extension($str){ $str = implode("",explode("\\",$str)); $str ...