关于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快速排序算法解析
数组的快速排序算法,和并归排序步骤基本类似. 都是先拆分,后合并.并归排序是:拆分容易,合并难. 快速排序是:拆分难,合并容易 要理解快速排序,首先要理解拆分逻辑 要素:找一个基准点,通过操作使得数列 ...
随机推荐
- JS 正则表达式详解
在此提供相关的链接,请访问: http://www.cnblogs.com/dolphinX/p/3486214.html http://www.cnblogs.com/dolphinX/p/3486 ...
- 湖南省第十二届大学生计算机程序设计竞赛 B 有向无环图 拓扑DP
1804: 有向无环图 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 187 Solved: 80[Submit][Status][Web Board ...
- Android Studio 插件整理
1.GsonFormat 快速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程. 使用方法:快捷键Alt+S也可以使用Alt+Insert选择G ...
- Apache Tomcat配置
- CF731C Socks并查集(森林),连边,贪心,森林遍历方式,动态开点释放内存
http://codeforces.com/problemset/problem/731/C 这个题的题意是..小明的妈妈给小明留下了n只袜子,给你一个大小为n的颜色序列c 代表第i只袜子的颜色,小明 ...
- AJAX案例三:处理XML响应
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 【POI xls Java map】使用POI处理xls 抽取出异常信息 --java1.8Group by ---map迭代 -- 设置单元格高度
代码处理逻辑: 代码流程: 1.首先需要创建一个实体 用来存储 相关信息 package com.sxd.test.unusualName; public class NameEntity { pri ...
- 《DSP using MATLAB》示例Example4.9
收敛域在圆外,对应原始时间序列为右边序列. 上代码: b = 1; a = poly([0.9, 0.9, -0.9]); % compute the polynomials coefficients ...
- 2.使用Package Control组件安装
安装Sublime Text 2插件的方法: 1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->p ...
- iOS数据持久化文件读写之偏好设置
很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能.每个应用都有个NSUserDefaults实例,通过它来存取偏好设置.比如, ...