js中排序方法
有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客。写技术博客,对自己是一种总结,对别人,是一种参考。
1.sort()方法
var ar1=[2,4,6,8,1,3]
var ar2=[2,16,36,8,56]
ar1.sort()
ar2.sort()//这个方法值只能排序第一位数 也可以字符串进行排序
console.log(ar1)//[1,2,3,4,6,8]
console.log(ar2)//[16, 2, 36, 56, 8] ar2.sort(function(a,b){
return a-b //a-b为升序
//return b-a //b-a为降序
})
console.log(ar2)//[2, 8, 16, 36, 56]
2.reverse()方法
var ar1=[2,4,6,8,1,3]
ar1.reverse()//此方法为倒序,也就是反过来。并不会进行大小排序
console.log(ar1)//[3, 1, 8, 6, 4, 2]
3.冒泡排序
//每轮依次比较相邻两个数的大小,后面比前面小则交换
var b=0//设置用来调换位置的值
var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
for(var i=0;i<a.length;i++){
for(var j=0;j<a.length;j++){
if(a[j]>a[j+1]){
b=a[j]
a[j]=a[j+1]
a[j+1]=b
}
}
}
console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]
4.选择排序
//拿第一个数与后面数相比较,如果比后面的数大则交换
//拿第二个数与后面的数比较,如果比后面的数大则交换
//直到比较到倒数第二个数,最后一个数不用比较
var b=0//设置用来调换位置的值
var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
for(var i=0;i<a.length;i++){
for(var j=i;j<a.length;j++){
if(a[j]>a[j+1]){
b=a[j]
a[j]=a[j+1]
a[j+1]=b
}
}
}
console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]
5.快速排序
先从数列中取出一个数作为基准数
分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
再对左右区间重复第二步,直到各区间只有一个数
function quickSort(arr, i, j) {
if(i < j) {
let left = i;
let right = j;
let mid = Math.floor((left+right)/2);
let temp = arr[left];
arr[left] = arr[mid];
arr[mid] = temp;
let pivot = arr[left];
while(i < j) {
while(arr[j] >= pivot && i < j) { // 从后往前找比基准小的数
j--;
}
if(i < j) {
arr[i++] = arr[j];
}
while(arr[i] <= pivot && i < j) { // 从前往后找比基准大的数
i++;
}
if(i < j) {
arr[j--] = arr[i];
}
}
arr[i] = pivot;
quickSort(arr, left, i-1);
quickSort(arr, i+1, right);
return arr;
}
}
js中排序方法的更多相关文章
- js中排序方法sort() 和 reverse()
reverse() 作用:反转原数组. 用法: array.reverse(); 图解: sort() 作用:对原数组进行排序.默认将每个数组项 先 转换为字符串 再 进行字符串对比后升序排序. 用法 ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- 【转载】JS中bind方法与函数柯里化
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
- js中apply方法的使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
paip.编程语言方法重载实现的原理及python,php,js中实现方法重载 有些语言,在方法的重载上,形式上不支持函数重载,但可以通过模拟实现.. 主要原理:根据参数个数进行重载,或者使用默认值 ...
- js中settimeout方法加参数
js中settimeout方法加参数的使用. 简单使用看w3school 里面没有参数调用, 例子: <script type="text/javascript"> ...
- js中split()方法得到的数组长度
js 中split(",")方法通过 ”,“ 分割字符串, 如果字符串中没有 “,” , 返回的是字符串本身 var str = “abc”://分隔符个数为0 var newSt ...
- 关于JS中的方法是否加括号的问题
js中的方法什么时候加括号什么时候不加括号呢,我们有时候经常就搞不清楚,记住下面这几点就好理解了. 1.函数做参数时都不要加括号. function fun(a){ alert(a); } funct ...
随机推荐
- 吴裕雄--天生自然python学习笔记:python用 Bokeh 模块绘制我国 GDP 数据统计图
现在我们把我国 1990 年到 2017 年的 GDP 数据抓取出 来,井用 Bokeh 绘 出散点统计图 . 由网页爬取所需数据,并用 Bokeh 绘制散点图 . import requests # ...
- 吴裕雄--天生自然 R语言开发学习:R语言的简单介绍和使用
假设我们正在研究生理发育问 题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-).我们感兴趣的是体重的分 布及体重和月龄的关系. 可以使用函数c()以向量的形式输入月龄和体重数据,此函 数 ...
- Qt 使用自带的OpenGL模块开发程序
QT中使用opengl .pro文件中添加 QT += opengl 1.使用指定版本的OpenGL如下使用opengl4.5调用方法,使用指定版本的接口,必须设备图形显示设备支持对应OpenGL版本 ...
- QT中的QQueue类、C++中的queue类
C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> queue<int> Q; //定义一个int型队列 Q.empty() ...
- MAC上安装maven以及配置Intellij IDEA
大前提:java环境已经配置好 maven是对于java工程的管理 一.maven安装到mac 1.首先,maven下载地址http://maven.apache.org/download.cgi 点 ...
- Spring中Bean的不同配置方式
Bean的配置方式一共分为三种: 1.基于XML(适用于第三方类库,无法在类中写注解以及写命名空间的配置等情况) 2.基于注解(适用于大部分情况) 3.基于Java类 以下是三种不同情况的配置方式 ...
- Qt 信号阻塞和断开
Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理. 1. 阻塞方法:bool QObject::blockSignals(b ...
- Java IO: FileInputStream
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) FileInputStream可以以字节流的形式读取文件内容.FileInputStream ...
- fiddler问题汇总
fiddler教程:https://kb.cnblogs.com/page/130367/ fiddler下载安装:https://www.cnblogs.com/mini-monkey/p/1128 ...
- 吴裕雄--天生自然 R语言开发学习:回归(续四)
#------------------------------------------------------------# # R in Action (2nd ed): Chapter 8 # # ...