javascript冒泡排序小结


Posted in Javascript onApril 10, 2016

冒泡排序示例,双向冒泡排序与对双向冒泡排序稍微的改进的可视化效果。

代码很简单,不知道有木有未知bug。
大神请勿吐槽

冒泡排序示例

var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
for(var i=0;i<ls.length;i++){
      for(var j=i+1;j<ls.length;j++){
        if(ls[i]>ls[j]){
          ls[i]=ls[i]+ls[j];
          ls[j]=ls[i]-ls[j];
          ls[i]=ls[i]-ls[j];
        } 
      }
    }

双向冒泡排序示例

var ls=[ 6,13,98,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
for(var i=0;i<ls.length;i++){
      for(var j=i+1;j<ls.length-i;j++){
        if(ls[lent-1-i]<ls[lent-j]){
          ls[lent-1-i]=ls[lent-1-i]+ls[lent-j];
          ls[lent-j]=ls[lent-1-i]-ls[lent-j];
          ls[lent-1-i]=ls[lent-1-i]-ls[lent-j];
        }//后面的比较
        if(ls[i]>ls[j]){
          ls[i]=ls[i]+ls[j];
          ls[j]=ls[i]-ls[j];
          ls[i]=ls[i]-ls[j];
        }//前面的比较
      }
    }

双向冒泡排序稍微改进示例

var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
var lent=ls.length;
for(var i=0;i<ls.length;i++){
      for(var j=i*2;j<ls.length-2*i;j++){
        if(ls[i*2]>ls[j+1]){
          ls[i*2]=ls[i*2]+ls[j+1];
          ls[j+1]=ls[i*2]-ls[j+1];
          ls[i*2]=ls[i*2]-ls[j+1];
        }//保持内层第一个数为循环最小
         
        if(ls[lent-i*2-1]<ls[lent-j-1]){
          ls[lent-i*2-1]=ls[lent-i*2-1]+ls[lent-j-1];
          ls[lent-j-1]=ls[lent-i*2-1]-ls[lent-j-1];
          ls[lent-i*2-1]=ls[lent-i*2-1]-ls[lent-j-1];
        }////保持内层倒数第一个数为循环最大
           
          if(ls[lent-2-i*2]<ls[lent-j-1]){
            ls[lent-2-i*2]=ls[lent-2-i*2]+ls[lent-j-1];
            ls[lent-j-1]=ls[lent-2-i*2]-ls[lent-j-1];
            ls[lent-2-i*2]=ls[lent-2-i*2]-ls[lent-j-1];
          }//倒数上一个
           
          if(ls[i*2+1]>ls[j+1]){
            ls[i*2+1]=ls[i*2+1]+ls[j+1];
            ls[j+1]=ls[i*2+1]-ls[j+1];
            ls[i*2+1]=ls[i*2+1]-ls[j+1];
          }//下一个
      }
}
Javascript 相关文章推荐
jquery validate poshytip 自定义样式
Nov 26 Javascript
js和jquery使按钮失效为不可用状态的方法
Jan 26 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
JS拖拽组件学习使用
Jan 19 Javascript
动态更新highcharts数据的实现方法
May 28 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
详解angular中的作用域及继承
May 31 Javascript
浅谈Vuejs Prop基本用法
Aug 17 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
Nov 16 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
layui上传图片到服务器的非项目目录下的方法
Sep 26 Javascript
javascript原生ajax写法分享
Apr 10 #Javascript
Javascript实现苹果悬浮虚拟按钮
Apr 10 #Javascript
jQuery实现点击水纹波动动画
Apr 10 #Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 #Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 #Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 #Javascript
JS表单验证的代码(常用)
Apr 08 #Javascript
You might like
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
Python字符串详细介绍
2015/05/09 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
劲霸男装广告词
2014/03/21 职场文书
创先争优标语
2014/06/27 职场文书
励志演讲稿200字
2014/08/21 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis