用JS实现的常见几种排序算法
1.快速排序法
function quickSort(a) {
if (a.length <= 1) {
return a;
}
var midLength = Math.floor(a.length / 2);
var midValue = a.splice(midLength,1);
var left = [];
var right = [];
for (var i = 0; i < a.length; i++) {
if (a[i] < midValue) {
left.push(a[i]);
} else {
right.push(a[i]);
}
}
return quickSort(left).concat(midValue,quickSort(right));
}
console.log(quickSort([1,5,3,6,2,4,0]));
2.插入排序法
function insertSort(a) {
var length = a.length;
var sortArray;
for (var i = 1; i < length; i++) {
for (var j = 0; j < i ; j++) {
if (a[i] < a[j]) {
sortArray = a[i];
a[i] = a[j];
a[j] = sortArray;
}
}
}
return a;
}
console.log(insertSort([0,6,5,3,4,2,1,7]));
3.冒泡排序
function bubbleSort(a) {
var length = a.length;
var sortArray;
for (var i = 0; i < length-1; i++) {
for (var j = 0; j < length-i-1 ; j++) {
if (a[j] > a[j+1]) {
sortArray = a[j];
a[j] = a[j+1];
a[j+1] = sortArray;
}
}
}
return a;
}
console.log(bubbleSort([2,1,3,6,5,4,7,0]));
4.选择排序
function selectSort(a) {
for (var i = 0; i < a.length; i++) {
var min = a[i];
var k = i;
for (var j = i + 1; j < a.length; j++) {
if (min > a[j]) {
min = a[j];
k = j;
}
}
a[k] = a[i];
a[i] = min;
}
return a;
}
console.log(selectSort([5,1,4,0,3,2,7,6]));
用JS实现的常见几种排序算法的更多相关文章
- 几种排序算法的学习,利用Python和C实现
之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- 学习Java绝对要懂的,Java编程中最常用的几种排序算法!
今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来! ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...
- 8种排序算法 Java实现
冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次 ...
- JavaScript实现的7种排序算法
所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率.对于排序,我们首先要求 ...
- PHP的几种排序算法的比较
这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序 85 ...
- C#常用8种排序算法实现以及原理简介
public static class SortExtention { #region 冒泡排序 /* * 已知一组无序数据a[1].a[2].--a[n],需将其按升序排列.首先比较a[1]与a[2 ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- java算法03 - 常用的8种排序算法
Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...
随机推荐
- Storm原理及安装
http://my.oschina.net/leejun2005/blog/147607 http://www.storm-geek.com/forum.php http://www.zhangjih ...
- (转)MySQL登陆后提示符的修改
MySQL登陆后提示符的修改 方法一:mysql命令行修改方式 mysql>prompt \u@night \r:\m:\s-> PROMPT set to '\u@night \r:\m ...
- android瓦片地图技术研究
最近根据公司项目需求,需要制作场馆的室内图并且实现根据rfid信号的自动定位功能,研究了好久找到了一个目前为止还算好用的瓦片地图工具——TileView. github连接:https://githu ...
- Chapter 3 Phenomenon——16
"Your X-rays look good," he said. "Does your head hurt? Edward said you hit it pretty ...
- Numpy基础总结
一.文件读取 numpy.genfromtxt() 可以用来读取各种文件.常用语法大致如下: numpy.genfromtxt(fname, dtype=<type 'float'>, d ...
- 词性标注 HMM
1.给定语料,统计语料中的词性为N,词组为M. 2.HMM关注3个参数 a.初始化概率 b.状态转移矩阵 N*N c.观测状态概率矩阵 N*M 3.状态转移矩阵:词A的词性为词性a,词B的词性为词性b ...
- j2ee高级开发技术课程第二周(web请求的整个过程、XML)
博客非原创,只是收集整理了一下网上的一些文章 一.web请求的整个过程 1)把URL分割成几个部分:协议.网络地址.资源路径.其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括 ...
- java的if语句,少于一行可以省略大括号
我们认识的 if 语句,大概是这样的: if(条件){ 语句1; }else{ 语句2; } 如果要执行的语句少于1行,大括号是可以省略的 可以让程序更简洁和美观 if(条件){ 语句1; 语句2; ...
- Spring boot --- Spring Oauth(一)
文章部分图片来自参考资料,这篇文章主要讲 spring security oauth 概述 上一篇我们学习了 SS 中重要的工作原理和几个大概的认证和授权过程.而 spring securit ...
- 【模板】 全排列 && 有重复元素的全排列
全排列 #include<bits/stdc++.h> using namespace std; ]; void print (int n){ ;i<=n;i++) cout< ...