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实现
写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...
随机推荐
- Binary Tree Postorder Traversal——重要的基本的算法
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...
- Go语言练习之方法,接口,并发
多练练,有感觉了就写实际的东东. package main import ( "fmt" "math" "os" "time&qu ...
- AC日记——[USACO06FEB]奶牛零食Treats for the Cows 洛谷 P2858
[USACO06FEB]奶牛零食Treats for the Cows 思路: 区间DP: 代码: #include <bits/stdc++.h> using namespace std ...
- jquery&javascript 跨域jsonp
$(function(){ $.ajax({ type: "get", async: false, url: "http://flightQuery.com/jsonp/ ...
- 五十三 网络编程 TCP/IP简介
虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的 ...
- JSON字符串转对象
JSON(JavaScript Object Notation) JavaScript对象标记法:JSON是与JavaScript高度契合的:JSON 语法: --数组(Array)用" ...
- Codeforces 1099 C. Postcard-字符串处理(Codeforces Round #530 (Div. 2))
C. Postcard time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- python的vim的环境配置(后续慢慢补充进来)
#vim ~/.vimrc set smartindent set smarttab set expandtab set tabstop= set softtabshtop= set shiftwid ...
- Poj1182 食物链(并查集/带权并查集)
题面 Poj 题解 这里采用并查集的补集. \(x\)表示同类集合,\(x+n\)表示敌人集合,\(x+n\times2\)表示敌人的敌人集合. 如果当前给出的是一对同类关系,就判断\(x\)是否吃\ ...
- NGUI 简单的背包系统
1.首先在场景中创建格子,用来存放物体的 2.为每一个格子设置标签为Item,建议只做一个格子,然后创建预制体就可以了,然后为每一个格子附加Box Collider组件,要用于检测嘛, 3.接下来就是 ...