代码运行环境: 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. Adobe 软件防止联网激活更改Hosts文件

    来自为知笔记(Wiz) 附件列表

  2. Volley网络框架的使用

    Volley的特点:   使用网络通信更快.更简单 Get/Post网络请求网络图像的高效率异步请求 可以对网络请求的优先级进行排序处理 可以进行网络请求的缓存 可以取消多级别请求 可以和Activi ...

  3. Android学习笔记(十)

    Android控件——ListView ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时 屏幕上原有的数据则会滚动出屏幕. 1.ListView的简单用法 新建一个Lis ...

  4. USACO 滑雪课程

    #include<cstdio> #include<iostream> using namespace std; int T,S,N,maxd; ],lv[],next[],f ...

  5. 表在用时建索引要加ONLINE

    因为: 源地址:https://zhidao.baidu.com/question/585392982737434725.html 一般建立索引会引起锁表,不允许进行数据更新等DML操作: 如果建立索 ...

  6. Laravel excel安装与使用

    在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能 时间 2015-11-17 18:40:56  Laravel学院 原文  http://lar ...

  7. 深入研究js构造函数和原型

    很快就要从新浪离职了,最近心情比较轻松,抽点空整理一下构造函数和原型的机理. 我们都知道,在经典设计模式中我们最常用的就是工厂模式.构造函数模式.原型模式这几种,听起来‘模式’好像很高大上的样子,实际 ...

  8. Spark SQL Example

     Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...

  9. Spring配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  10. 【转】apache DateFormatUtils 与 DateUtils 的使用

    在Apache Commons项目的Lang里面,有两个类:DateUtils和DateFormatUtils,专门用于处理时间日期转换.它们在 org.apache.commons.lang.tim ...