关于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快速排序算法解析
数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...
随机推荐
- 比较两个文件文件可以使用MD5比较工具
举例来说,当我们对一个设备进行升级. 固件程序是一个文件,而我们发送的数据可以组成一个文档, 实质是把这两个文件拖入到下图中的工具中,查看一下MD5值.SHA1值.CRC32的值,如果值都一样说明这两 ...
- 求数组的长度 C
对于数组array,计算其占用内存大小和元素个数的方法如下: C/C++ code ? 1 2 3 4 5 //计算占用内存大小 sizeof(array) //计算数组元素个数 sizeof(a ...
- visio如何让动态连接线的单箭头变成双箭头?
1 选中线,右击,然后选择“格式”,“线条” 2 3
- 分布式文件系统FastDFS设计原理(转)
FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server).存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题 ...
- Java会出现"unreachable code"错误的几个例子
public class exam { static int num=5; static int m1(){ try{ num=6; throw new NullPointerException(); ...
- PHP 下载简历
下载简历:先生成html模版,然后在下载转化为word格式: 获取数据方法: 先获取数据,然后开启缓存,写入数据,关闭缓存:然后下载成word: /** * 下载简历--简单 * @author La ...
- 同步、更新、下载Android Source & SDK from 国内镜像站
转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download the android source from china mirrors 以 ...
- Codeforces Round #349
终于又回到熟悉的Round了 数学 A - Pouring Rain 设个未知数,解方程,还好没有hack点 #include <bits/stdc++.h> typedef long l ...
- Android定位方式和测试方法
Android常用的三种定位方式有:基于GPS定位.基于基站地位.基于wifi定位. 1.基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的. GPS定位最 ...
- 持续集成基础-Jenkins(一)
什么是jenkins: Jenkins是持续集成的一个系统,它是一种软件开发实践活动(经常执行集成,可能每天) 持续集成的价值: 1.减少风险 - 能够尽早的发生问题 2.减少重复过程 - 把重复的东 ...