8大排序算法总结 JS 实现
//bubble sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function bubbleSort(arr,comp){for(var i = 0;i < arr.length; i++){for(var j = 0; j < arr.length - i - 1; j++){if(comp(arr[j],arr[j+1])){exch(arr,j,j+1);}}}}function exch(a,i,j){var tmp = a[i];a[i] = a[j];a[j] = tmp;}var input = newArray(5,1,4,2,3);bubbleSort(input,function(a,b){returna > b;});console.log(input);input = newArray(5,1,4,2,3);bubbleSort(input,function(a,b){returna < b;});console.log(input); | 
//selection sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | function selectionSort(arr,comp){for(var i = 0;i < arr.length ; i++){for(var j = i;j < arr.length ; j++){if(comp(arr[i],arr[j])) { exch(arr,i,j); }}}}function exch(a,i,j){var t = a[i];a[i] = a[j];a[j] = t;}var input = newArray(5,1,4,2,3);selectionSort(input,function(a,b){returna > b;});console.log(input);input = newArray(5,1,4,2,3);bubbleSort(input,function(a,b){returna < b;});console.log(input); | 
//insert sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function insertSort(arr,comp){var result = newArray();for(;arr.length > 0;){var inserted = false;for(var j = 0;j < result.length; j++){if(comp(result[j],arr[0])) { insert(result,j,arr[0]); inserted = true; break;}}if(!inserted){insert(result,result.length,arr[0]);}arr.splice(0,1);}returnresult;}function insert(arr,i,v){arr.splice(i,0,v);}var input = newArray(5,1,4,2,3);var ret = insertSort(input,function(a,b){returna > b;});console.log(ret);var input = newArray(5,1,4,2,3);ret = insertSort(input,function(a,b){returna < b;});console.log(ret); | 
//shell sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function shellSort (a,comp) {    for(var h = a.length; h = parseInt(h / 2);) {        for(var i = h; i < a.length; i++) {            var k = a[i];            for(var j = i; j >= h && comp(k, a[j - h]); j -= h)                a[j] = a[j - h];            a[j] = k;        }    }    returna;}var arr =newArray(7,9,2,5,4,1,3);var r = shellSort(arr,function (a,b){returna > b;});console.log(r); | 
//merge sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | function mergeS(arr,comp){if(arr.length == 1){returnarr;}var mid = arr.length / 2| 0;var leftArr = newArray();var rightArr = newArray();for(var i = 0;i < mid;i ++){leftArr.push(arr[i]);}for(var j = mid;j < arr.length; j++){rightArr.push(arr[j]);}console.log("before : "+ leftArr + " | "+ rightArr);var leftRet = mergeS(leftArr,comp);var rightRet = mergeS(rightArr,comp);var r = merge(leftRet,rightRet,comp);returnr;}function merge(leftArr,rightArr,comp){var ret = newArray();var i = j = 0;for(;i < leftArr.length && j < rightArr.length; ){if(comp(leftArr[i],rightArr[j])){ret.push(leftArr[i]); i ++}else{ret.push(rightArr[j]); j ++}}for(;i < leftArr.length;){ret.push(leftArr[i]);i++;}for(;j< rightArr.length; ){ret.push(rightArr[j]);j++;}returnret;}var r = mergeS(newArray(0,6,5,1,2,4,3,9),function(a,b){returna > b;});console.log(r); | 
//quick sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | function quickS(arr,lo,hi,comp){if(lo >= hi){return;}var stub = arr[lo];var i = lo + 1;var j = hi;for(;i < j ;){for(;i < j && !comp(stub,arr[j]);j--);for(;i < j && comp(stub,arr[i]);i++);if(i >= j){break;}var t = arr[i];arr[i] = arr[j];arr[j] = t;j--;i++;}if(comp(arr[lo],arr[i])){var t = arr[lo];arr[lo] = arr[i];arr[i] = t;}quickS(arr,lo,i-1,comp);quickS(arr,i,hi,comp);}var input = newArray(22,3,10,66,15,11,2,4,31,9);quickS(input, 0, input.length - 1,function(a,b){returna > b;});console.log(input); | 
//heap sort
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var ret = newArray();function heapS(arr,comp){if(arr.length == 0){return;}var i = arr.length / 2| 0;for(;i >= 0; i--){if(comp(arr[i], arr[i * 2])){exch(arr, i, i*2);}if(comp(arr[i], arr[i * 2+ 1])) {exch(arr, i, i*2+ 1);}}ret.push(arr[0]);arr.splice(0,1);heapS(arr,comp);}function exch(arr,i,j){var t = arr[i];arr[i] = arr[j];arr[j] = t;}heapS(newArray(16,22,91,0,51,44,23),function (a,b){returna > b;});console.log(ret);
 | 
8大排序算法总结 JS 实现的更多相关文章
- [ 转载 ]  js十大排序算法:冒泡排序
		js十大排序算法:冒泡排序 http://www.cnblogs.com/beli/p/6297741.html 
- 使用 js 实现十大排序算法: 快速排序
		使用 js 实现十大排序算法: 快速排序 QuickSort 快速排序 /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @c ... 
- 使用 js 实现十大排序算法: 桶排序
		使用 js 实现十大排序算法: 桶排序 桶排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 计数排序
		使用 js 实现十大排序算法: 计数排序 计数排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 基数排序
		使用 js 实现十大排序算法: 基数排序 基数排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 冒泡排序
		使用 js 实现十大排序算法: 冒泡排序 冒泡排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 希尔排序
		使用 js 实现十大排序算法: 希尔排序 希尔排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 插入排序
		使用 js 实现十大排序算法: 插入排序 插入排序 // 双重循环 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
- 使用 js 实现十大排序算法: 选择排序
		使用 js 实现十大排序算法: 选择排序 选择排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 
随机推荐
- 近观ArcGIS 10.3.1
			ArcGIS 10.3.1公布了是有很多增强和改变.接下来我们重点内容一睹为快. 一.三维内容制作.公布及分享 ArcGIS 10.3.1能够实现三维内容制作.公布及分享.公布流程: 须要的软件环境 ... 
- ssm redis 数据字典在J2EE中的多种应用与实现
			数据字典在项目中是不可缺少的“基础设施”,关于数据字典如何设计如何实现,今天抽空讲一下吧 先看一下表设计: 通过自定义标签来实现页面的渲染: public class DataDictValueTag ... 
- Atitti 过程导向 vs 结果导向 attilax的策略
			Atitit 世界著名零食 1.1. /////milk hand candy , milk soft candy . fruit soft candy1 1.2. ==========cookie ... 
- Java中创建String的两种方式差异
			我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd"; String str2 = new String("abcd&qu ... 
- 关于linux上cron服务的python封装工具
			关于cron:定时任务服务,一般linux自带且已启动.(pgrep cron查看cron服务是否启动了.) 关于plan:一个通过python来定制cron服务的工具.其官网:http://plan ... 
- Window  分布式学习-好文收藏
			概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ... 
- DIOCP开源项目-数据库连接池的使用<多帐套数据库>
			很久没有写DIOCP的Demo了,主要公司的事情太繁琐,工作之余都不想动了,之前承若的群里面朋友们的DEMO,昨天晚上恶补了一下,把对数据库连接池的操作加入到了Demo中,大家可以通过SVN下载到最新 ... 
- Spark SQL  inferSchema实现原理探微(Python)【转】
			使用Spark SQL的基础是“注册”(Register)若干表,表的一个重要组成部分就是模式,Spark SQL提供两种选项供用户选择: (1)applySchema applySche ... 
- mac电脑的系统偏好设置的安全与隐私的任何来源没有了
			打开电脑搜索 输入终端 打开终端输入 sudo spctl --master-disable 
- 2017 码云最火爆开源项目 TOP 50,你都用过哪些
			本文转自:https://share.html5.qq.com/fx/u?r=JdjvzwC 2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度.活跃度.访 ... 
