关于JS的算法
一.快速排序
function qSort(arr) {
if(arr.length === 0) {
return [];
} var left = [];
var right = [];
var pivot = arr[0]; for (var i = 1; i < arr.length; i++) {//从i=1开始
if(arr[i] < pivot) {
left.push(arr[i]);
}else {
right.push(arr[i]);
}
}
return qSort(left).concat(pivot, qSort(right));
}//快速排序 window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(qSort(a));//快速排序
}
二.插入排序
function insertionSort(arr) {
var temp, inner;
console.log(arr);
for(var outer = 1; outer < arr.length; outer++) {
temp = arr[outer];
inner = outer;
while(inner > 0 && (arr[inner - 1] >= temp)) {
arr[inner] = arr[inner - 1];
inner--;
}
arr[inner] = temp;
}
return arr;
}//插入排序 window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(insertionSort(a));//插入排序
}
三.选择排序法
function selectionSortMax(arr) {
var max;
for(var outer = 0; outer < arr.length; outer++) {
max = 0;
for(var inner = 0; inner < arr.length - outer; inner++) {
if(arr[inner] > arr[max]) {
max = inner;
}
}
swap(arr, max, arr.length - outer - 1);
}
return arr;
}//选择排序法选择最大值移到最后 function selectionSortMin(arr) {
var min, temp;
for(var outer = 0; outer < arr.length - 1; outer++) {
min = outer;
for(var inner = outer + 1; inner < arr.length; inner++) {
if(arr[inner] < arr[min]) {
min = inner;
}
}
swap(arr, min, outer);
}
return arr;
}//选择排序法选择最小值移到最前 function swap(arr, index1, index2) {
var temp = arr[index2];
arr[index2] = arr[index1];
arr[index1] = temp;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(selectionSortMax(a));
console.log(selectionSortMin(a));
}
四.冒泡排序法
function bubbleSort(arr) {
var temp;
for(var outer = arr.length; outer > 1; outer--) {
for(inner = 0; inner < outer - 1; inner++) {
if(arr[inner] > arr[inner + 1]) {
swap(arr, inner, inner + 1);
}
}
}
return arr;
}//冒泡排序法 function swap(arr, index1, index2) {
var temp = arr[index2];
arr[index2] = arr[index1];
arr[index1] = temp;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(bubbleSort(a));//冒泡排序法
}
五.归并算法
function mergeSortRec(array) {
var length = array.length;
if(length == 1) {
return array;
} var mid = Math.floor(length / 2);
var left = array.slice(0, mid);
var right = array.slice(mid, length); return merge(mergeSortRec(left), mergeSortRec(right));
} function merge(left, right) {
var result = [];
var il = 0;
var ir = 0;
while(il < left.length && ir < right.length) {
if(left[il] < right[ir]) {
result.push(left[il++]);
}else {
result.push(right[ir++]);
}
} while(il < left.length) {
result.push(left[il++]);
} while(ir < right.length) {
result.push(right[ir++]);
} return result;
} window.onload = function() {
var a = [];
for (var i = 0; i < 10; ++i) {
a[i] = Math.floor((Math.random()*100)+1);
}
console.log(a);
console.log(mergeSortRec(a));//归并排序法
}
通过时间戳可以得到快速排序>选择排序>插入排序>冒泡排序。
关于JS的算法的更多相关文章
- js的 算法 和 数据结构
js的 算法 1.对一个对象数组按照对象某个属性进行排序 : https://www.cnblogs.com/webcabana/p/7460038.html 在做公交的项目中就碰到过这种算法问题, ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- Round() 四舍五入 js银行家算法(转)
首先问一下round(0.825,2) 返回的结果,大家猜一猜, 首先SQL server 返回的是 0.83 js的返回结果 是0.83,code 如下: var b = 0.825; ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- 结构-行为-样式-Js排序算法之 快速排序
快速排序算法,是我的算法系列博客中的第二个Js实现的算法,主要思路: 在一个数组中随机取一个数(一般都取第一个或者最后一个),使这个数与数组中其他数进行比较,如果比它大就放到它的右边,比它小就放 ...
- js排序算法汇总
JS家的排序算法 十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...
- JS排序算法
1.冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们. 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就是最大项了,所以第二次需要交换 ...
- 常用的 JS 排序算法整理
关于排序算法的问题可以在网上搜到一大堆,但是纯 JS 版比较零散,之前面试的时候特意整理了一遍,附带排序效率比较. //1.冒泡排序 var bubbleSort = function(arr) { ...
- js的算法题
1.统计一个字符串中出现最多的字母 给出一个字符串,统计出现次数最多的字母.如:“wqeqwhixswiqhdxsq”,其中出现最多的是q. js算法的实现 function findMax(str) ...
- js快速排序算法解析
数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...
随机推荐
- button hot key 热键
<Button x:Name="ScanIDButton" Margin="11,0,0,0" IsEnabled="{Binding Elem ...
- js循环添加事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【框架】异步加载大量图片--ImageLoader
public abstract class BaseImageLoaderProvider { public abstract void loadImage(Context ctx, ImageLoa ...
- AOP静态代理解析1-标签解析
AOP静态代理使用示例见Spring的LoadTimeWeaver(代码织入) Instrumentation使用示例见java.lang.instrument使用 AOP的静态代理主要是在虚拟机启动 ...
- DSP using MATLAB 示例Example3.22
代码: % Discrete-time Signal x2(n) Ts = 0.001; n = -5:1:5; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nT ...
- DZY Loves Sequences
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- Ubuntu Mono 运行 Helloworld
Ubuntu Mono 运行 Helloworld ref: http://www.mono-project.com/docs/getting-started/install/linux/#usage ...
- kafka storm hbase性能
kafka 单台机器部署 1个partition storm 单台机器部署 hbase 四台机器集群 机器配置大概是4G cpu 4G内存 从kafka 读出到storm,然后flush到hbase ...
- BZOJ4113 : [Wf2015]Qanat
设$f_i$表示用$i$个辅助井时代价的最小值,$x_i$表示此时最后一个辅助井的位置. 则$f_i$是关于$x_i$的一个二次函数,其中系数跟$f_{i-1}$有关,递推求出极值点即可. 时间复杂度 ...
- 【BZOJ4034】[HAOI2015]树上操作 树链剖分+线段树
[BZOJ4034][HAOI2015]树上操作 Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 ...