快排

        Array.prototype.fastSort = function(){
var arr = this; function sort(left, right, arr){
if( left >= right){
return;
}
var key = arr[left];
var i = left;
var j = right; while(i < j){
while(i < j && arr[j] >= key){
j--;
}
arr[i] = arr[j];
while(i < j && arr[i] <= key){
i++;
}
arr[j] = arr[i];
}
arr[i] = key;
sort(left, i - 1, arr);
sort(i + 1, right, arr);
} sort(0, arr.length - 1, arr); return arr;
}

插排

        Array.prototype.insertSort = function(){
var arr = this;
var len = arr.length;
for(var i = 1; i < len; i ++ ){
var j = i - 1;
var tmp = arr[i];
while(j >= 0 && tmp < arr[j]){
arr[j + 1] = arr[j];
j--;
}
if(j != i - 1){
arr[j + 1] = tmp;
}
}
return arr;
}

选择排序

        Array.prototype.selectSort = function(){
var arr = this;
var len = arr.length;
var min;
var tmp;
for(var i = 0; i < len - 1; i ++ ){
min = i;
for(var j = i + 1; j < len; j++){
if(arr[min] > arr[j]){
min = j;
}
}
if(min != i){
tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
return arr;
}

堆排序

       Array.prototype.swap = function(i, j){
var tmp = this[i];
this[i] = this[j];
this[j] = tmp;
} //大顶堆
Array.prototype.buildMaxHeap = function(){
for(var i = Math.floor(this.length/2) - 1; i >= 0; i--){
this.heapAdjust(i, this.length);
}
}; //调整堆
Array.prototype.heapAdjust = function(i, j){
var max = i;
var left = 2 * i + 1;
var right = 2 * i + 2;
if(left < j && this[max] < this[left]){
max = left;
}
if(right < j && this[max] < this[right]){
max = right;
}
if(max != i){
this.swap(i,max);
this.heapAdjust(max,j);
};
} //堆排序
Array.prototype.heapSort = function(){
this.buildMaxHeap();
for(var i = this.length - 1; i >= 0 ; i--){
this.swap(0, i);
this.heapAdjust(0, i);
}
return this;
};

【js基础】js排序方法——快排+堆排+插排+选择排的更多相关文章

  1. JS基础篇--sort()方法的用法,参数以及排序原理

    JS基础篇--sort()方法的用法,参数以及排序原理   sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort( ...

  2. js 几种排序方法

    1.冒泡排序 var arr = [9, 7, 5, 3, 1]; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j &l ...

  3. js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域

    js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...

  4. 关于js中sort()排序方法

    第一次写这个,算是记录自己的学习前端的一点点的历程吧.今天在做一个图片的随机排序遇到了一个问题,部分截图如下 我用的是json格式存储数组,想通过排序实现img数组中的内容升序或是降序发现用sort自 ...

  5. js数组sort排序方法的算法

    说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD ...

  6. js中的排序方法

    一.冒泡排序 var  arr=[22,1,33,19,77]; function  bubbleSort(arr){ for(var i=0;i<arr.length-1;i++){ for( ...

  7. JS基础-----JS中的分支结构及循环结构

    [分支结构] 一.if-else结构 1.结构的写法:if(判断条件){ //条件为true时,执行if的{} }else{ //条件为false时,执行else的{} } 2.注意事项 ①else语 ...

  8. JS基础---->js中ajax的使用

    AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.今天我们就简单的学习一下ajax的使用及过程. ajax的使用 先贴出大致的代码,是请求本地的一个servlet,返回json格 ...

  9. [妙味JS基础]JS热身运动

    知识点总结 获取ID元素 document.getElementById(' ') 事件:鼠标事件.键盘事件.系统事件.表单事件.自定义事件 onclick onmouseout onmouseove ...

随机推荐

  1. 剑指offer【01】- 二维数组中的查找(Java)

    在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...

  2. web自动化测试---测试环境的部署

    当前我的测试环境配置如下: python3.6 下载地址: https://www.python.org/downloads/release/python-365/ 选择windows版本,下载完成后 ...

  3. BitMap位图与海量数据的理解与应用

    1. Bit Map算法简介 来自于<编程珠玑>.所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素.由于采用了Bit为单位来存储数据,因此在存储空 ...

  4. 使用okHttp3 的坑!!

    1.使用同步阻塞调用: 需要自己创建线程,否则会报主线程使用网络的error: 2.使用非阻塞异步调用: 1.返回的Response,response.body().string()获取json只能读 ...

  5. redis 五种数据类型

    前言 前面学会了单机, 学会了集群, 但是redis咋用啊? 或者说, redis支持哪些数据类型呢? 常用的有五种: String , Hash, List, Set, zset(SortedSet ...

  6. sql 表连接

     join (inner join ) 注释:INNER JOIN 关键字在表中存在至少一个匹配时返回行. left join  注释:LEFT JOIN 关键字从左表(table1)返回所有的行,即 ...

  7. apache伪静态配置(URL重写)

    1.打开apache配置文件 httpd.conf .2.开启rewrite模块,去掉注释# #LoadModule rewrite_module modules/mod_rewrite 3.让apa ...

  8. spring-boot-2.0.3启动源码篇五 - run方法(四)之prepareContext

    前言 此系列是针对springboot的启动,旨在于和大家一起来看看springboot启动的过程中到底做了一些什么事.如果大家对springboot的源码有所研究,可以挑些自己感兴趣或者对自己有帮助 ...

  9. C# 性能优化 之 秒表 Stopwatch。

    生词解释:Diagnostics[,daɪəg'nɑstɪks] n.诊断学 using System.Diagnostics; Stopwatch sw = new Stopwatch (); sw ...

  10. c#:HttpClient加标头

    using (var client = new HttpClient()) { string requestUrl = string.Format("{0}{1}", ConstD ...