JavaScript算法描述(一)
function swap(arr,index1,index2){
var temp=arr[index1];
arr[index1]=arr[index2];
arr[index2]=temp;
}
冒泡排序
冒泡排序算法,它是最慢的排序算法之一,但也是一种最容易实现的排序算法。
之所以叫冒泡排序,是因为进行算法排序是,数据值会像气泡一样从数组的一端漂浮到另一端。
PS:逐个相邻的两个比较,将较大的往右浮动,从而第一轮得到最大的值放置最右边。依次类推,第二轮得到第二大的值放置右侧倒数第二的位置。最终得到从左到右依次递增的序列。
function bubbleSort(arr){
var numElements=arr.length;
var temp;
//n个数排序,只用进行n-1趟
for(var outer=1; outer<=numElements-1; outer++){
for(var inner=0; inner<=numElements-outer; inner++){
if(arr[inner]>arr[inner+1]){
swap(arr,inner,inner+1);
}
}
}
}
选择排序
选择排序算法,选择排序会用到嵌套循环,从数组的开头开始,将第一个元素和其他元素进行比较。检查完所有元素后。最小的元素会被放到数组的第一个位置,然后算法会从第二个位置继续。这个过程一直进行,当进行到数组的倒数的第二个位置时,所有的数据便完成了排序。
function selectionSort(arr){
var min,temp;
for(var outer=0; outer<=arr.length-2; outer++){
min=outer;
for(var inner=outer+1; inner<=arr.length-1; inner++){
if(arr[inner]<arr[min]){
swap(arr,inner,min);
}
}
}
}
插入排序
插入排序通过将较大的数组元素移动到右侧,为数组左侧的较小元素腾出位置。
function insertionSort(arr){
var temp,inner;
for(var outer=1; outer<=arr.length-1; ++outer){
temp=arr[outer];
inner=outer;
while(inner>0 && (arr[inner-1]>=temp)){
arr[inner]=arr[inner-1];
--inner;
}
arr[inner]=temp;
}
}
JavaScript算法描述(一)的更多相关文章
- JavaScript算法题之–随机数的生成
JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2 ...
- 【原】小搞一下 javascript算法
前言:在前端大全中看到这句话,以此共勉.基础决定你可能达到的高度, 而业务决定了你的最低瓶颈 其实javascript算法在平时的编码中用处不大,不过不妨碍我们学习它,学习一下这些算法的思想,锻炼一下 ...
- javascript算法汇总(持续更新中)
1. 线性查找 <!doctype html> <html lang="en"> <head> <meta charset="U ...
- JavaScript算法与数据结构知识点记录
JavaScript算法与数据结构知识点记录 zhanweifu
- 迪杰斯特拉(Dijkstra)算法描述及理解
Dijkstra算法是一种计算单源最短无负边路径问题的常用算法之一,时间复杂度为O(n2) 算法描述如下:dis[v]表示s到v的距离,pre[v]为v的前驱结点,用以输出路径,vis[v]表示该点最 ...
- JavaScript 算法与数据结构(转载)
JavaScript 算法与数据结构 https://github.com/trekhleb/javascript-algorithms/blob/master/README.zh-CN.md
- JavaScript算法 ,Python算法,Go算法,java算法,系列之【归并排序】篇
常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的 ...
- FCC上的javascript算法题之中级篇
FCC中的javascript中级算法题解答 中级算法的题目中用到了很多js的知识点,比如迭代,闭包,以及对json数据的使用等等,现在将自己中级算法的解答思路整理出来供大家参考讨论.欢迎大家提出新的 ...
- JavaScript算法(归并排序与快速排序)
归并排序与快速排序这两个算法放在一起,也是因为时间复杂度都是对数级别的. 目前看过的资料,归并排序看<学习JavaScript数据结构与算法>介绍的归并排序吧,快速排序直接看百度百科,讲的 ...
随机推荐
- Java中的流程控制(二)
关于Java程序的流程控制(二) 关于Java程序的流程控制(二) 3.switch选择语句 switch语句用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句. switch( ...
- java之观察者模式
import java.util.Observable; import java.util.Observer; class House extends Observable { private ...
- 一周学会Mootools 1.4中文教程:(6)动画
先看一下动画的参数设置: 参数: fps - (number:默认是50) 每秒的帧数. unit - (string:默认是 false) 单位,可为 'px','em',或 '%'. link - ...
- xStream完美转换XML、JSON_java
http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html
- Spring集成Quartz定时器
<!-- Spring集成Quartz开始 --> <bean id="startQuertz" lazy-init="false" auto ...
- checkbox 全选反选实现全代码
//跳转到指定action function validateForm(url){ if($("#form").form('validate')){ var x=document. ...
- ThinkPad x200为何总是CPU占用50%
2009年,我从美国买回一台ThinkPad X200 Tablet,Windows XP Tablet PC Edition 2005版,服役几年一直很正常.直到2012年初的时候,突然发现电脑非常 ...
- CodeForces 154B- Colliders
预处理...由于10^5<2^20..所以每个数的质因子个数最多20个..为了避免重复运算..将素有数的质因子打表出来... 两个数如果互质..那么他们的最大公约数为1..反过来说..两个数如果 ...
- hbase0.96 put流程 源码分析
无意间多瞄了一眼hbase0.98的代码,想复习下put流程.发现htable里面已经找不到processBatchOfPuts()奇怪了.看了半天原来变化还真大事实上0.96就没这个了,于是又搞了个 ...
- 九度OnlineJudge之1012:畅通工程
题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路 ...