javascript的排序算法
已经准备秋招一段时间了,因为这个关系也在各种巩固知识,顺便整理一下一些东西。这篇文章就是自己整理了一下各种JS的排序算法,以便自己以后回顾。
冒泡排序
function bubbleSort(arr){
var len = arr.length
for(var i=len-1;i>0;i--){
for(var j=0;j<i;j++){
var temp = 0
if(arr[j]>arr[j+1]){
//如果前一个元素大于后一个元素,则交换位置
var temp = 0
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
var arr = [1,2,5,4,56,54,33,2,23]
bubbleSort(arr) //[1, 2, 2, 4, 5, 23, 33, 54, 56]
快速排序
function quickSort(arr){
if(arr.length<1){
return arr
}
//选取基数
var pivotIndex = Math.floor(arr.length/2)
var pivot = arr.splice(pivotIndex,1)
var left = [] //放置小于基数的数
var right = [] //防止大于基数的数
for(var i=0;i<arr.length;i++){
if(arr[i]>pivot){
right.push(arr[i])
}else{
left.push(arr[i])
}
}
return quickSort(left).concat(pivot,quickSort(right))
}
var arr = [1, 2, 3, 4, 5]
quickSort(arr) //[1, 2, 3, 4, 5]
选择排序
将待排序列中最小的值与第一个位置的值交换;
剩下的值中再取最小的值与第二个位置的值交换,以此类推直到所有的顺序都排好。
function selectSort(arr){
var len = arr.length
for(var i=0;i<len-1;i++){
var min = arr[i] //默认先将第i个值列为最小值
var minIndex = i //最小值的下标
for(var j = i+1;j<len;j++){
//从第i个值之后的值开始比较,因为i之前的值已经排好序
if(arr[j]<min){
min = arr[j]
minIndex = j
}
}
//将第i个值与最小值交换位置
arr[minIndex] = arr[i]
arr[i] = min
}
return arr
}
var arr = [3,2,13,5,6,7]
selectSort(arr) //[2, 3, 5, 6, 7, 13]
插入排序
从第二个元素开始排序;
待排元素之前的元素已经排好序,将待排元素按照大小插入合适的位置,以此类推。
function insertSort(arr){
var len = arr.length
for(var i=1;i<len;i++){
var now = arr[i]
var j = i-1
while(j>=0 && arr[j]>now){
arr[j+1] = arr[j] //数组后移
j--
}
arr[j+1] = now
}
return arr
}
var arr = [1,3,2,5,4]
selectSort(arr) //[1, 2, 3, 4, 5]
javascript的排序算法的更多相关文章
- JavaScript版排序算法
JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) //排序算法 window.onload = function(){ var array = ...
- javascript高级排序算法之快速排序(快排)
javascript高级排序算法之快速排序(快排)我们之前讨论了javascript基本排序算法 冒泡排序 选择排序 插入排序 简单复习: 冒泡排序: 比较相邻的两个元素,如果前一个比后一个大,则交换 ...
- javascript常用排序算法实现
毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下: & ...
- javascript常用排序算法总结
算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...
- JavaScript之排序算法
一.冒泡排序 原理:1.比较相邻的元素.如果第一个比第二个大,就交换两个数:2.对每一对相邻元素重复做步骤一,从开始第一对到结尾的最后一对,该步骤结束会产生一个最大的数:3.针对所有的数重复以上的步骤 ...
- JavaScript 实现排序算法
参考文章: 十大经典排序算法动画,看我就够了! 1. 冒泡排序 思路 比较所有相邻元素,如果第一个比第二个大,则交换它们 一轮下来,可以保证最后一个数是最大的 执行n-1轮,就可以完成排序 代码 Ar ...
- JavaScript随机排序算法1
1.对数组循环,每一项与随机的某一项位置调换 <ul id="listOne"></ul> <div id="tempOne"&g ...
- JavaScript实现排序算法总结
<script type="text/javascript" src="js/laydate.js" > //插入排序 function inser ...
- javascript实现排序算法
准备好好学习js了,js写的第一个排序 先推荐一个js在线编辑工具,RunJS,还不错. 冒泡排序 var arr = [2,4,1,5,3]; function handle(arr){ for(v ...
随机推荐
- 正则表达式从右往左进行匹配(Regex)
#匹配最末两位为数字 $x=New-Object regex ('\d{2}','RightToLeft') #$x.RightToLeft $x.Match('abcd22') 结果:
- HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和
To the moonTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- c# windowsForm打印
在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .net Framework的打 印功能都以组件的方式提供,为程序员提供了很大的方便,但是 ...
- ShareSDK for iOS 2.9.0已经公布
ShareSDK for iOS v2.9.0已经公布,本次更新内容包含: 1.修复Facebook获取用户信息报错问题 2.修复Instagram在iPad上显示分享菜单错误问题,须要指定菜单容器. ...
- android圆角View实现及不同版本这间的兼容(android3.0过后的版本)
http://blog.csdn.net/lovecluo/article/details/8710174 在做我们自己的APP的时候,为了让APP看起来更加的好看,我们就需要将我们的自己的View做 ...
- [安卓学习]AndroidManifest.xml文件内容详解
一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根 ...
- C# TextBox 换行 滚动到最后一行
.要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:) ...
- oracle 基本操作
1. 开启oralce和监听#su - oracle$sqlplus / as sysdba>startup>exit$lsnrctl start$ps -ef|grep oracle 一 ...
- 天池大数据周冠军分享|附移动推荐算法赛答辩会Top5选手PPT
上周是淘宝穿衣搭配算法大赛开始评测后的第一周,周冠军是来自浙江大学的"FUC AUTH"队.他们在夺得本周冠军之后,还将自己的获胜经验分享给了大家,究竟有什么秘诀呢? 阿里巴巴天池 ...
- Linux下安装配置Node及memcached
这篇主要是记录Linux下安装Node及memcached遇到的问题及安装配置过程,方便日后查阅 Node安装及配置 [root@hostname ~]tar zxvf node-v0.12.4.ta ...