一.快速排序

function qSort(arr) {
if(arr.length === 0) {
return [];
} var left = [];
var right = [];
var pivot = arr[0]; for (var i = 1; i < arr.length; i++) {//从i=1开始
if(arr[i] < pivot) {
left.push(arr[i]);
}else {
right.push(arr[i]);
}
}
return qSort(left).concat(pivot, qSort(right));
}//快速排序 window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(qSort(a));//快速排序
}

  

二.插入排序

function insertionSort(arr) {
var temp, inner;
console.log(arr);
for(var outer = 1; outer < arr.length; outer++) {
temp = arr[outer];
inner = outer;
while(inner > 0 && (arr[inner - 1] >= temp)) {
arr[inner] = arr[inner - 1];
inner--;
}
arr[inner] = temp;
}
return arr;
}//插入排序 window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(insertionSort(a));//插入排序
}

  

三.选择排序法

    function selectionSortMax(arr) {
var max;
for(var outer = 0; outer < arr.length; outer++) {
max = 0;
for(var inner = 0; inner < arr.length - outer; inner++) {
if(arr[inner] > arr[max]) {
max = inner;
}
}
swap(arr, max, arr.length - outer - 1);
}
return arr;
}//选择排序法选择最大值移到最后 function selectionSortMin(arr) {
var min, temp;
for(var outer = 0; outer < arr.length - 1; outer++) {
min = outer;
for(var inner = outer + 1; inner < arr.length; inner++) {
if(arr[inner] < arr[min]) {
min = inner;
}
}
swap(arr, min, outer);
}
return arr;
}//选择排序法选择最小值移到最前 function swap(arr, index1, index2) {
var temp = arr[index2];
arr[index2] = arr[index1];
arr[index1] = temp;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(selectionSortMax(a));
console.log(selectionSortMin(a));
}

  

四.冒泡排序法

function bubbleSort(arr) {
var temp;
for(var outer = arr.length; outer > 1; outer--) {
for(inner = 0; inner < outer - 1; inner++) {
if(arr[inner] > arr[inner + 1]) {
swap(arr, inner, inner + 1);
}
}
}
return arr;
}//冒泡排序法 function swap(arr, index1, index2) {
var temp = arr[index2];
arr[index2] = arr[index1];
arr[index1] = temp;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(bubbleSort(a));//冒泡排序法
}

五.归并算法

function mergeSortRec(array) {
var length = array.length;
if(length == 1) {
return array;
} var mid = Math.floor(length / 2);
var left = array.slice(0, mid);
var right = array.slice(mid, length); return merge(mergeSortRec(left), mergeSortRec(right));
} function merge(left, right) {
var result = [];
var il = 0;
var ir = 0;
while(il < left.length && ir < right.length) {
if(left[il] < right[ir]) {
result.push(left[il++]);
}else {
result.push(right[ir++]);
}
} while(il < left.length) {
result.push(left[il++]);
} while(ir < right.length) {
result.push(right[ir++]);
} return result;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(mergeSortRec(a));//归并排序法
}

通过时间戳可以得到快速排序>选择排序>插入排序>冒泡排序。

关于JS的算法的更多相关文章

  1. js的 算法 和 数据结构

    js的 算法 1.对一个对象数组按照对象某个属性进行排序  : https://www.cnblogs.com/webcabana/p/7460038.html 在做公交的项目中就碰到过这种算法问题, ...

  2. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  3. Round() 四舍五入 js银行家算法(转)

    首先问一下round(0.825,2) 返回的结果,大家猜一猜, 首先SQL server 返回的是 0.83 js的返回结果 是0.83,code 如下: var b = 0.825;        ...

  4. 排序图解:js排序算法实现

    之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...

  5. 结构-行为-样式-Js排序算法之 快速排序

    快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路:    在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放 ...

  6. js排序算法汇总

    JS家的排序算法   十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...

  7. JS排序算法

    1.冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们. 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就是最大项了,所以第二次需要交换 ...

  8. 常用的 JS 排序算法整理

    关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...

  9. js的算法题

    1.统计一个字符串中出现最多的字母 给出一个字符串,统计出现次数最多的字母.如:“wqeqwhixswiqhdxsq”,其中出现最多的是q. js算法的实现 function findMax(str) ...

  10. js快速排序算法解析

    数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...

随机推荐

  1. MongoDB学习(1)—在Windows系统中安装MongoDB

    概述 本文主要介绍在Windows系统安装MongoDB的方法. MongoDB官方网址:http://www.mongodb.org/,最新版本为2.6.7. 注意: 从2.2版本开始,MongoD ...

  2. MySQL的中文编码问题

    创建表格时,怎么让表格显示中文?注意:不区分大小写 mysql> ALTER TABLE 表格的名字 CONVERT TO CHARACTER SET UTF8; 怎么让默认的数据库支持中文字符 ...

  3. python中的变量和数据类型

    一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...

  4. SQL初级第三课(下)

    我们续用第三课(上)的表 辅助表 Student                   Course               Score                    Teacher Sno ...

  5. JS_ECMA基本语法中的几种封装的小函数

      先来回顾一下我们的字符串: 字符串方法: str.length str.charAt(i):取字符串中的某一个; str.indexOf('e');找第一个出现的位置;找不到返回-1; str.l ...

  6. js兼容方法:获取当前样式|计算后样式 getStyle

    function getStyle(obj,attr){ if(obj.currentStyle){ //for IE return obj.currentStyle[attr]; }else{ re ...

  7. TestNg依赖配置基础用法(单一方法依赖)------TestNg依赖详解(一)

    TestNg依赖测试之简单方法依赖,通过dependsOnMethods属性来配置依赖方法 原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong J ...

  8. poj2386(简单dfs)

    就是求图中有多少个水洼.对图进行dfs遍历,并把是水洼的地方全部标记.然后从下一个是水哇的地方再进行dfs. #include <cstdio> #include <iostream ...

  9. iOS学习04C语言数组

    1.一维数组 数组:具有相同类型的成员组成的一组数据 1> 定义 元素:数组中存放的数据成为数组的元素     数组是构造类型,用{...}来给构造类型赋初始值,类型修饰符用来表示元素的类型 类 ...

  10. 啥时候js单元测试变的重要起来?

    作为一个菜鸟,开这个专栏其实不合适,但又突然发现这个比以往任何时候都重要,所以还是写写我的感受 首先,在传统的pc上也有大量的web站点和各种项目都有复杂的js,但是基本不做单元测试,为啥呢?因为传统 ...