1.冒泡排序

function bubble_sort(arr) {
if (arr.length <= 1) {
return arr;
}
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr = [3, 5, 8, 1, 2, 4, 7, 9];
var sort = bubble_sort(arr);
console.log(sort);

2.快速排序

function quick_sort(arr) {
if (arr.length <= 1)
return arr;
var pivot = Math.floor((arr.length - 1) / 2), //Math.fllor()返回一个小于或者等于给定数字的最大整数
pivotValue = arr[pivot],
left = [],
right = [];
arr = arr.slice(0, pivot).concat(arr.slice(pivot + 1)); //concat()连接两个数组返回一个新的数组 slice()返回包含提取元素的新数组
for (var i = 0; i < arr.length; i++) {
if (arr[i] < pivotValue) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return [].concat(quick_sort(left), [pivotValue], quick_sort(right));
}
var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
var sort = quick_sort(arr);
console.log(sort);

3.合并排序

function merge(left, right) {
var result = [];
while (left.length && right.length) {
if (left[0] < right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
return result.concat(left).concat(right);
} function merge_sort(arr) {
if (arr.length <= 1) return arr;
var mid = Math.floor(arr.length / 2),
left = arr.slice(0, mid),
right = arr.slice(mid);
return merge(merge_sort(left), merge_sort(right));
} var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
var sort = merge_sort(arr);
console.log(sort);

4.选择排序

function selection_sort(arr) {
for (var i = 0; i < arr.length; i++) {
var min = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
if (min != i) {
var temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
return arr;
} var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
var sort = selection_sort(arr);
console.log(sort);

5.插入排序

function insertion_sort(arr) {
for (var i = 0; i < arr.length; i++) {
var j = i - 1,
temp = arr[i];
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
arr[j] = temp;
j--;
}
}
return arr;
} var arr = [3, 8, 9, 1, 2, 6, 4, 7, 5];
var sort = insertion_sort(arr);
console.log(sort);

JavaScript常见排序算法的更多相关文章

  1. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  2. javascript常用排序算法总结

    算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...

  3. JS常见排序算法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 常见排序算法(JS版)

    常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...

  5. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  6. JavaScript版排序算法

    JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) //排序算法 window.onload = function(){ var array = ...

  7. 常见排序算法-Python实现

    常见排序算法-Python实现 python 排序 算法 1.二分法     python    32行 right = length-  :  ]   ):  test_list = [,,,,,, ...

  8. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  9. javascript高级排序算法之快速排序(快排)

    javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...

随机推荐

  1. Python编译遇到的一些错误及解决办法

    nunicodeessscape codec can't decode bytes in position2-3:truncated\UXXXXXXXX escape 描述:im=Image.open ...

  2. Java之线程通信的方法

    /** * 线程通信的例子:使用两个线程打印 1-100.线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器. * no ...

  3. TensorFlow 实例一(一元线性回归)

    使用TensorFlow进行算法设计与训练的核心步骤: 准备数据 构建模型 训练模型 进行预测 问题描述: 通过人工数据集,随机生成一个近似采样随机分布,使得w = 2.0 ,b= 1,并加入一个噪声 ...

  4. Python笔记_第四篇_高阶编程_py2与py3的区别

    1. 性能: py3.x起始比py2.x效率低,但是py3.x现有极大的优化空间,效率正在追赶. 2. 编码: py3.x原码文件默认使用的utf-8编码,使得变量名更为宽阔. 3. 语法: * 去除 ...

  5. Python笔记_第三篇_面向对象_1.面向对象的基本概念和作用域

    1. 软件编程的实质: 软件编程就是将我们的思维转变成计算机能够识别语言的一个过程.重要的是思想,代码技术反而次要.因此思想也是最难的,突破固定的思想是关键 2. 什么是面向过程: * 自上而下顺序执 ...

  6. 【Python杂货铺】速学python基础

    "人生苦短,我学python"是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十 ...

  7. 七、linux-mysql下mysql增量备份与恢复

    1.备份的意义 运维工作:保护公司的数据     .  网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...

  8. JS创建数组的三种方法

    1     常规方式 创建数组并给数组元素赋值 var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Vo ...

  9. java连接access的用户名、密码异常Decoding not supported解决

    Java通过ucanaccess对Access数据库.accdb文件连接: public static Connection getConn() { try { String dbURL = &quo ...

  10. c++与c语言的区别部分

    1.new       <malloc> delete    <free> 2.多态: 重载 <函数     操作符>   类似于c中的变化参数 虚函数 3.模板 ...