毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用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常用排序算法实现的更多相关文章

  1. javascript常用排序算法总结

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

  2. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  3. javascript常用经典算法实例详解

    javascript常用经典算法实例详解 这篇文章主要介绍了javascript常用算法,结合实例形式较为详细的分析总结了JavaScript中常见的各种排序算法以及堆.栈.链表等数据结构的相关实现与 ...

  4. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  5. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  6. JavaScript版排序算法

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

  7. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  8. 面试中常用排序算法实现(Java)

    当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...

  9. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

随机推荐

  1. BZOJ 1010 玩具装箱toy(斜率优化DP)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题目大意:P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他 ...

  2. 下载安装go插件包报错fatal: unable to access 'https://github.com/golang/tools.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

    使用git命令来给vscode安装go插件的时候报错,如下: $ git clone https://github.com/golang/tools.git tools Cloning into 't ...

  3. Python 面向对象的三大特性

    面向对象的三大特性:继承,封装,多态 什么时候用封装: 同一种功能的时候, 譬如:把一部分数据或方法,封装到同一个类的中 PS:在构造方法中,原始数据中....

  4. AC日记——背单词 洛谷 P2353

    背单词 思路: KMP+统计前缀和优化: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1000005 ], ...

  5. Nginx+PHP “No input file specified”错误的解决办法

    配置官网商城php网站时候,界面报错“No input file specified” 原理: 任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在. PHP文件 ...

  6. 启动Tomcat报错 “A child container failed during start”

    严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalin ...

  7. 洛谷P2224 [HNOI2001] 产品加工 [DP补完计划,背包]

    题目传送门 产品加工 题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时 ...

  8. json_decode转码无效

    由于最近从原来常用的utf-8的字符转到了gbk:所以,在用json_decode的时候遇到了返回为空: 经查找发现是json_decode和json_encode只针对utf8字符串有效: 于是用到 ...

  9. Codeforces Round #165 (Div. 1) Greenhouse Effect(DP)

    Greenhouse Effect time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  10. CentOS7系统防火墙开关、状态与自启

    首先需要说明的是CentOS7使用的是firewalld.service,而不是iptables.service [xf@xuexi ~]$ systemctl status firewalld.se ...