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

<!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. tomcat点击startup.bat一闪而退的方法

    摘要 在摸索tomcat的配置的时候,发现在启动tomcat服务器的时候,点击startup一闪而退. 解决办法 分析闪退原因,简单做法,右键编辑startup.bat文件,在最后一行添加“pause ...

  2. Subversion detected an unsupported working copy version

    关于这个错误:Subversion detected an unsupported working copy version while checking the status of 'XXXX'. ...

  3. Navicat Premium 12.1.7.0安装与激活

    原文:https://www.jianshu.com/p/5f693b4c9468 Navicat Premium 12.1.8.0安装与激活 丿记忆灬永殇丨 关注 2018.01.20 13:43* ...

  4. Android 中的概念大集合

    Intent: An Intent is an object that provides runtime binding between separate components (such as tw ...

  5. 网络拥塞控制(七)BIC-TCP

    转自:http://www.cnblogs.com/fll/archive/2009/02/24/1397592.html 上面我们已经提到了HSTCP,它通过简单的修改标准TCP的增长方式,从而达到 ...

  6. Work Management Service application in SharePoint 2016

    最近开始弄SharePoint 2016的Workflow,遇到问题发现没有了Work Management Service application,然后用PowerShell命令创建也不行,bing ...

  7. mysql 内存表

    show variables like 'max_%'; max_heap_table_size 16777216     max_tmp_tables 32     show variables l ...

  8. ArrayAdapter使用方法

    ArrayAdapter是一个简单的适配器,他的作用是将一个数组中的内容放入listView中.listView的item必须为textView. MainActivity.java package ...

  9. 深入理解多线程(五)—— Java虚拟机的锁优化技术

    本文是<深入理解多线程>的第五篇文章,前面几篇文章中我们从synchronized的实现原理开始,一直介绍到了Monitor的实现原理. 前情提要 通过前面几篇文章,我们已经知道: 1.同 ...

  10. Bias(偏差),Error(误差),和Variance(方差)的区别和联系

    准: bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好.要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容 ...