javascript的冒泡排序, 快速排序, 选择排序, 插入排序
冒泡排序, 最经典的排序, 把比较大的数字往后放, 和选择排序恰恰相反:
<!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的冒泡排序, 快速排序, 选择排序, 插入排序的更多相关文章
- 数组排序代码,冒泡排序&快速排序&选择排序
冒泡排序: 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 ...
- JavaScript算法(冒泡排序、选择排序与插入排序)
冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...
- php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法
这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...
- 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列
目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...
- Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析
前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...
- Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)
一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...
- 算法 排序lowB三人组 冒泡排序 选择排序 插入排序
参考博客:基于python的七种经典排序算法 [经典排序算法][集锦] 经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...
- 【排序算法】——冒泡排序、选择排序、插入排序、Shell排序等排序原理及Java实现
排序 1.定义: 所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列. 输入:n个记录,n1,n2--,其对应1的关键字为k1,k2-- 输出:n(i1),n(i2)--,使得k( ...
- java面向对象的冒泡排序,选择排序和插入排序的比较
这三种排序有俩个过程: 1.比较俩个数据. 2.交换俩个数据或复制其中一项. 这三种排序的时间级别 冒泡排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2 交换 0 ...
- 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]
关于冒泡排序,选择排序,插入排序,希尔排序[资料收集] 以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...
随机推荐
- cmd 递归删除目录或文件
递归删目录 for /r <TARGET DIR> %i in (<DIR NAME or Pattern>) do rd /s /q %i 递归删文件 for /r < ...
- 使用jQuery实现input数值的增量和减量
在很多电商网站中,在购物车所在页面,涉及到商品数量的时候,都会提供一个+号按钮和-号按钮来实现增1和减1,并且只允许input中输入数值.Bootstrap TouchSpin这款插件就是针对此需求而 ...
- CRC8算法DELPHI源码
unit Crc8; interface Uses Classes, Windows; Function Crc_8n(p : array of BYTE; len : BYTE) : Byte; i ...
- springcloud 分布式服务跟踪sleuth+zipkin
原文:https://www.jianshu.com/p/6ef0b76b9c26 分布式服务跟踪需求 随着分布式服务越来越多,调用关系越来越复杂,组合接口越来越多,要进行分布式服务跟踪监控的需求也越 ...
- [erlang] mnesia
原文地址: http://www.cnblogs.com/bluefrog/archive/2012/05/16/2504625.html 本来是项目合作的,可是你却一而再再而三的使用这招,我处理愤怒 ...
- 工具:使用过的 API 文档生成工具
背景 2012 年之前几乎没有为代码增加注释,当然,代码的命名也不见得合理(好的代码胜过面面俱到的注释),后来接触过一些开源框架,优秀的框架都有一个特点:文档和示例非常多,在后来的日子里,几乎会强制自 ...
- maven + sonar, gradle + sonar
sonar installation and configuration Download sonar http://downloads.sonarsource.com/sonarqube/ Deco ...
- 用ImageSwitcher实现显示图片(更改图片时有动画效果)
ImageView和ImageSwitcher都是用来显示图片的.只不过后者在更新显示的图片的时候可以有动画效果. 注意点: 1.ImageSwitcher初始化需要定义一个ViewFactory,该 ...
- TextView 中文文档
属性名称 描述 android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) ...
- Visual Studio Code compile error - launch.json must be configured...
一.在最初使用VS Code创建控制台应用时, 使用VS Code调试工具默认会跑出异常: launch: program 'launch: launch.json must be configure ...