javascript常用排序算法实现
毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript常用排序算法实现</title>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
</head>
<body> <script> /* 将以下序列从大到小进行排序 */
var arr = [54,23,12,56,433,112,995,226,331,43,64,87,43,24,57,68,45,33,77,98,23,432,432,654,345,23,123,765,432,889]; /* 插入排序 */
function insertionSort(arr) {
for( var i = 1; i < arr.length ; i++ ) {
for( var j = i ; j >= 0 ; j-- ) {
if(arr[j] > arr[j - 1]) {
arr[j] = [ arr[j -1] , arr[j - 1] = arr[j] ][0]; // 交换变量
}
}
}
return arr;
}
//console.log(insertionSort(arr)); /*
*快速排序
*
* 该方法的基本思想是:
* 1.先从数列中取出一个数作为基准数。
* 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
* 3.再对左右区间重复第二步,直到各区间只有一个数。
* 参考 :http://blog.csdn.net/morewindows/article/details/6684558
*/ function quickSort(arr){
(function(l,r){
if(l < r ){
var from = l,
to = r,
x = arr[from];//在第一个地方挖一个坑 while( from < to ) { //从右向左查找小于x的数来填 arr[from]
while( x >= arr[to] && from < to ) {
to --;
}
if(from < to){
arr[from] = arr[to]; //将arr[to]中的数填到arr[from],这里arr[to]形成了一个新坑
from ++;
} //从左向右查找小于x的数来填 arr[to]
while( x <= arr[from] && from < to) {
from ++;
}
if(from < to){
arr[to] = arr[from]; //将aar[from]中的数填到arr[to],这里arr[from]形成了一个新坑
to --;
}
} arr[from] = x; arguments.callee(l , from - 1 ) ;
arguments.callee(from + 1 , r) ;
}
}(0,arr.length-1));
return arr;
} //console.log(quickSort(arr)); /* 冒泡排序 */
function bubleSort(arr){ for(var i = 0 ; i < arr.length-1 ; i ++ ) {
for(var j = 0 ; j < arr.length - i -1 ; j++ ) {
if( arr[j] < arr[j+1] ) {
arr[j] = [arr[j+1],arr[j+1]=arr[j]][0];
}
}
} return arr;
} //console.log(bubleSort(arr)); /* 堆排序 */
function heapSort(arr){ var makeMinHeap = function(a , len){ for(var i = len -1 ; i >= 0 ; i --) {
var parentIdx = Math.floor((i-1)/2);
if( parentIdx >= 0 && a[i] < a[parentIdx] ){
a[i] = [ a[parentIdx] , a[parentIdx] = a[i] ][0];
}
}
return a;
} for( var i = arr.length -1 ; i > 0 ; i -- ){
arr = makeMinHeap(arr,i+1);
arr[0] = [arr[i],arr[i] = arr[0]][0];
} return arr;
} //console.log(heapSort(arr)); </script> </body>
</html>
javascript常用排序算法实现的更多相关文章
- javascript常用排序算法总结
算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
- javascript常用经典算法实例详解
javascript常用经典算法实例详解 这篇文章主要介绍了javascript常用算法,结合实例形式较为详细的分析总结了JavaScript中常见的各种排序算法以及堆.栈.链表等数据结构的相关实现与 ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- JavaScript版排序算法
JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) //排序算法 window.onload = function(){ var array = ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- 面试中常用排序算法实现(Java)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
- 常用排序算法java实现
写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...
随机推荐
- NOIP 2012 Day1
tags: NOIP 模拟 倍增 高精 Python categories: 信息学竞赛 总结 Luogu P1079 Vigenère 密码 Solution 表示并不是很懂其他人发的题解. 我是这 ...
- linux命令(25):ln命令
命令格式: ln [参数][源文件或目录][目标文件或目录] 必要参数: -b 删除,覆盖以前建立的链接 -d 允许超级用户制作目录的硬链接 -f 强制执行 -i 交互模式,文件存在则提示用户是否覆盖 ...
- Spiral Matrix I&&II
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- 也记一次性能优化:LINQ to SQL中Contains方法的优化
距离上一篇博文更新已经两个月过去了.在此,先表一表这两个月干了些啥: 世界那么大,我也想去看看.四月份的时候,我入职了上海的一家电商公司,职位是.NET高级开发工程师.工作一个月,最大的感受是比以前小 ...
- vue-music 关于Search(搜索页面)-- 搜索结果优化
搜索结果 列表点击跳转到相应的歌手详情页或者 歌曲页面,通过子路由跳转,和singer 组件一样 在suggest.vue 组件判断如果点击的是歌手,则new 一个歌手对象,通过这个对象的id 属性值 ...
- 洛谷P1330 封锁阳光大学 [图论,染色]
题目传送门 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...
- redis缓存总结----干货
Redis的概念 Redis是一款内存高速缓存数据库.Redis全称为:Remote Dictionary Server(远程数据服务),Redis是一个key-value存储系统,它支持丰富的数据类 ...
- Did Pong Lie? (差分系统 判负环)
Did Pong Lie? 时间限制: 5 Sec 内存限制: 128 MB提交: 68 解决: 15[提交][状态][讨论版] 题目描述 Doctor Pong has two arrays o ...
- 解决CDH的web界面使用nginx代理一些静态文件无法加载
vim /opt/cm-/share/cmf/webapp/WEB-INF/spring/mvc-config.xml .... 注释此行 <bean class="com.cloud ...
- 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)
On Octorber 21st, HDU 50-year-celebration, 50-color balloons floating around the campus, it's so nic ...