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. android implementation 依赖第三方库

    依赖第三方库

  2. 如何在Foxwell NT650 OBD2扫描仪上查看实时PID数据?

    这是在Foxwell NT650扫描仪上使用实时数据菜单的操作指南 . 实时数据菜单使您可以查看和记录来自电子控制模块的实时PID数据.菜单选项通常包括: 完整的数据清单 自定义数据列表 如何使用“完 ...

  3. Unity3D事件函数的执行顺序

    In Unity scripting, there are a number of event functions that get executed in a predetermined order ...

  4. Linux-父进程wait回收子进程

    1.wait工作原理 (1).子进程结束时,系统向其父进程发送SIGCHILD信号 (2).父进程调用wait函数后阻塞 (3).父进程被SIGCHILD信号唤醒然后去回收僵尸子进程 (4).父子进程 ...

  5. 简单总结------redis

    一.Redis 是一个基于内存的高性能key-value数据库. 二.端口 6379 三.特点: Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在 ...

  6. random mating

    随机交配种群 孟德尔分离(基于diploid and sexual)和随机交配(1.不因突变而改变的规律2.可计算的)是群体遗传学的基础. 随机交配(random mating)指群体中每一个成员与另 ...

  7. [LC] 146. LRU Cache

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  8. 一个搜索框的小demo

    一.实时按照输入的搜索值显示与其匹配的内容,隐藏其它内容 <%@ Page Language="C#" AutoEventWireup="true" Co ...

  9. elasticserch-hadoop spak 网络配置异常排查

    elasticserch hadoop 在本地测试写入 elasticsearch:9200时成功 线上环境却报错如下 org.elasticsearch.hadoop.EsHadoopIllegal ...

  10. Linear Equations

    4.1 Linear Equations with One Independent Variable