冒泡排序, 最经典的排序, 把比较大的数字往后放, 和选择排序恰恰相反:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
function sort(elements){
for(var i=;i<elements.length-;i++){
for(var j=;j<elements.length-;j++){
if(elements[j]>elements[j+]){
var swap=elements[j];
elements[j]=elements[j+];
elements[j+]=swap;
}
}
}
} var elements = [, , , , , , , , , ];
console.log('before: ' + elements);
sort(elements);
console.log(' after: ' + elements);
</script>
</body>
</html>

  javascript实现的快速排序, 选取数组的第一个为中间值, 然后把小于中间值的元素排到数组的左边, 把大于中间值的元素排到数据右边, 充分利用二分法, 排序效率非常高:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>quick sort</title>
</head>
<body>
<script>
var arr = [5,2,9,8,4,10,8];
function quick(arr) {
if(arr.length<=1) {
return arr;
}
//指定第一个元素为中间元素
var val = arr[0];
arr.splice(0,1);
var left = [], right = [];
for(var i=0, len = arr.length ; i<len; i++) {
if(arr[i]<val) {
left.push(arr[i]);
}else if(arr[i]>val) {
right.push(arr[i]);
}else{
left.push(arr[i]);
}
}
return [].concat(quick(left),val,quick(right));
}
console.log(quick(arr));
</script>
</body>
</html>

  JS实现插入排序:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>insert</title>
</head>
<body>
<script>
var arr = [5,2,9,8,4,10,1,3];
function sort(arr) {
//假设第一个为有序的, 除了第一个以外全部是无序的;
for(var i=1; i<arr.length; i++) {
if(arr[i] < arr[i-1]) {
var val = arr[i];
arr[i] = arr[i-1];
var j = i-1;
while(val<arr[j]&&j>=0) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = val;
}
}
return arr;
};
console.log( sort(arr) );
</script>
</body>
</html>

  javascript中的选择排序, 寻找数组中的最小元素 , 让他与数组中的第一个元素互换, 然后在剩余的数组中找到最小的元素, 让他与第二个元素互换, 依次类推, 就是选择排序的逻辑:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>select sort</title>
</head>
<body>
<script>
var arr = [5,2,9,8,4,10,1,3,3];
function sort(arr) {
for(var i=0; i<arr.length-1; i++) {
for(var j=i; j<arr.length; j++) {
if(arr[j]<arr[i]) {
var val = arr[i];
arr[i] = arr[j];
arr[j] = val;
}
}
}
return arr;
};
console.log( sort(arr) );
</script>
</body>
</html> 

  EOF————

作者: NONO
出处:http://www.cnblogs.com/diligenceday/

QQ:287101329

微信:18101055830

javascript的冒泡排序, 快速排序, 选择排序, 插入排序的更多相关文章

  1. 数组排序代码,冒泡排序&快速排序&选择排序

    冒泡排序: for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1 ...

  2. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  3. php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

    这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...

  4. 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列

    目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...

  5. Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

    前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...

  6. Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)

    一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...

  7. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

  8. 【排序算法】——冒泡排序、选择排序、插入排序、Shell排序等排序原理及Java实现

    排序 1.定义: 所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列. 输入:n个记录,n1,n2--,其对应1的关键字为k1,k2-- 输出:n(i1),n(i2)--,使得k( ...

  9. java面向对象的冒泡排序,选择排序和插入排序的比较

    这三种排序有俩个过程: 1.比较俩个数据. 2.交换俩个数据或复制其中一项. 这三种排序的时间级别 冒泡排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2 交换  0 ...

  10. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

随机推荐

  1. 用格式工厂将mts文件转换成其它格式flv,mpg失败

    通常情况下,是由帧速率的改变引起的! 看一看你的MTS帧速率是多少,则转换成FLV时,帧速率要一样!----------  这是非常重要的!!!

  2. 让DELPHI自带的richedit控件显示图片

    让DELPHI自带的richedit控件显示图片 unit RichEx; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichE ...

  3. byte[],bitmap,drawable之间的相互转换

    Byte[]转Bitmap BitmapFactory.decodeByteArray(data, 0, data.length); Bitmap转Byte[] ByteArrayOutputStre ...

  4. [Android Pro] AndroidStudio IDE界面插件开发(进阶篇之Editor)

    转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001/article/details/53885981] 我们开发AndroidStudio ...

  5. MSSQL2008 全文索引的创建

    从MSSQL2008开始,全文索引推荐的创建方式已经与2005不同了.对于字符类型的数据库,可以直接创建. CREATE UNIQUE INDEX hr_job_idx ON hr_job_datab ...

  6. 在此处打开OpenPowershellHere右键 在此处打开命令窗口右键

    windows 10  右键添加在本文件夹打开cmd  或prowershell 在此处打开OpenPowershellHere右键 Windows Registry Editor Version 5 ...

  7. ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别

    https://www.cnblogs.com/savorboard/p/5586229.html 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的, ...

  8. K3 LEDE固件更改FRP客户端版本

    1.下载文件 /usr/bin/wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.23. ...

  9. 第三章 Typescript 基本数据类型

    Typescript 基本数据类型 一.基本数据类型 Boolean Number String Array Tuple Enum Any Void Null 和 Undefined Never 二. ...

  10. 如何在Vblock里配置Boot from SAN

    啥是vBlock ============ vBlock是VCE用在包含了它的数据中心产品的组件的机架上的一个商标名. 机架中的组件都是有VCE出厂前预先组装好的, 组件的预设以及解决方案, 都是客户 ...