代码运行环境: nodejs + mochajs

 /*
*选择排序
*每次查找数组最小数据
*将最小数据排到左侧
*/
var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() { var result = [1, 1, 2, 3, 55, 90] it('quickSortTest', function() {
var arr1 = [3, 2, 55, 1, 90, 1]
assert.equal(result.toString(), coolSort.quickSort(arr1).toString());
}); it('bubbleSortTest', function() {
var arr2 = [1, 3, 2, 55, 90, 1] assert.equal(result.toString(), coolSort.selectionsSort(arr2).toString());
}) it('selectionsSortTest', function() {
var arr3 = [1, 55, 2, 3, 90, 1] assert.equal(result.toString(), coolSort.selectionsSort(arr3).toString());
})
});
}); var coolSort = (function() { function compare(arg1, arg2) {
if(arg1 > arg2) {
return 1;
} else if(arg1 === arg2) {
return 0;
} else {
return -1;
}
} function swap(arr, arg1, arg2) {
var temp = arr[arg1];
arr[arg1] = arr[arg2];
arr[arg2] = temp;
} this.selectionsSort = function(arr) {
"use strict";
//判断是否是数组
if(Object.prototype.toString.call(arr) !== "[object Array]") return arr; var len = arr.length,
min = 0,
j = 0,
temp = 0; //判断数组长度
if(len <= 1) return arr; for(var i = 0; i < len -1; i++) { min = i;
//查找出最小的一个数据
for(j = i + 1; j < len; j++) {
if(compare(arr[min], arr[j]) === 1)
min = j;
}
//如果i不是最小的数据,将i与最小数据进行交换
if(min !== i) swap(arr, min, i) } return arr;
} this.quickSort = function(arr) {
"use strict";
if(arr.length <= 1) return arr; var pivotIndex = Math.floor((arr.length / 2));
var pivot = arr.splice(pivotIndex, 1); var left = [];
var right = []; for(var i =0; i < arr.length; i++) {
if(arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
} return quickSort(left).concat(pivot, quickSort(right))
} this.bubbleSort = function (arr) {
"use strict";
var temp = 0,
len = arr.length,
j = 0;
for(var i =0; i < len - 1; i++) {
for(j = 0; j < len - i - 1; j++) {
if(compare(arr[j], arr[j + 1]) === 1 ) {
swap(arr, j , j + 1);
}
}
}
return arr;
} return this;
})()

javascript算法的更多相关文章

  1. 【原】小搞一下 javascript算法

    前言:在前端大全中看到这句话,以此共勉.基础决定你可能达到的高度, 而业务决定了你的最低瓶颈 其实javascript算法在平时的编码中用处不大,不过不妨碍我们学习它,学习一下这些算法的思想,锻炼一下 ...

  2. JavaScript算法题之–随机数的生成

    JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2      ...

  3. javascript算法汇总(持续更新中)

    1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="U ...

  4. JavaScript算法与数据结构知识点记录

    JavaScript算法与数据结构知识点记录 zhanweifu

  5. JavaScript 算法与数据结构(转载)

    JavaScript 算法与数据结构 https://github.com/trekhleb/javascript-algorithms/blob/master/README.zh-CN.md

  6. JavaScript算法(归并排序与快速排序)

    归并排序与快速排序这两个算法放在一起,也是因为时间复杂度都是对数级别的. 目前看过的资料,归并排序看<学习JavaScript数据结构与算法>介绍的归并排序吧,快速排序直接看百度百科,讲的 ...

  7. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  8. javascript算法挑战

    1.翻转字符串算法挑战: 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. 你的结果必须得是一个字符串 function reverseString(str) ...

  9. JavaScript算法 ,Python算法,Go算法,java算法,系列之【归并排序】篇

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的 ...

  10. FCC上的javascript算法题之中级篇

    FCC中的javascript中级算法题解答 中级算法的题目中用到了很多js的知识点,比如迭代,闭包,以及对json数据的使用等等,现在将自己中级算法的解答思路整理出来供大家参考讨论.欢迎大家提出新的 ...

随机推荐

  1. 兵家必争之地——关于O2O商业模式的一点遐想

    先来说说什么是O2O(online to offline)商业模式.创新工场CEO李开复在提及O2O模式时指出,“你如果不知道O2O至少知道团购,但团购只是冰山一角,只是第一步”.O2O营销模式又称离 ...

  2. Gulp安装及配合组件构建前端开发一体化

    原文:http://www.dbpoo.com/getting-started-with-gulp/ 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3 ...

  3. linux下tomcat的安装和配置

    安装前要求: 1. 安装java环境. 2. 配置java环境变量 开始了: 1. 在官网下载tomcat:http://tomcat.apache.org/ 2. linux环境选择.zip或者.t ...

  4. haproxy +keepalived 原创

    Haproxy+keepalived 原理: HAProxy介绍及其定位 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根 ...

  5. Career path of Bioinformatics

    Core services: Reward bioinformaticians http://www.nature.com/news/core-services-reward-bioinformati ...

  6. js插件添加打印功能

    <%@ page language="java" %> <%@ page contentType="text/html; charset=gb2312& ...

  7. 冒泡排序,sql分页语句

    对数组中的数字进行排序 public int[] PopSmall(int[] IntArray) { ; ; i < IntArray.Length - ; i++) { ; j < I ...

  8. tomcat出现的PermGen Space问题

    java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出现这个错误的原因,总结一下: PermGen Space指的是内存的永久保存区,该 ...

  9. php类型的相关函数,运算符,条件判断,循环

    类型的相关函数 函数的原型  :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...

  10. 虚拟机下linux安装mysql,apache和php

    由于腿伤了,卧床在家折腾下linux,尝试用虚拟机装mysql,apche和php.中间各种波折,装了好几天,觉得有些经验还是要记录下来,让自己别忘了:) 按照下面这篇文章的方法,基本可以顺利安装成功 ...