js实现冒泡排序
冒泡排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
var flag = false;
var x = 0;//计算转换的次数
var arr = [35,88,16,27,32,4,90,56,79];
for(var j = 0;j<arr.length-1;j++){
//大的排序次数(arr.length-1)
// 为什么要arr.length-1。假如是9个数,第一趟就把最大的数固定了,第二趟就把第二大的数固定了,
//每排一趟就固定了一个大数,第八趟就固定了第 八大的数,9个数8个位置都已经定下来了,那么剩下的数就是最小的数(第九大的数),
//所以就不用再排了,9个数,只需要排8趟,n个数,只需n-1趟
for(var i = 0;i<arr.length-1;i++){
//小的排序,不停两两交换,
//为什么要减i,因为每定义一个大数,后面的两两交换循环就减少一次。
//假设为9个数,如第一趟,i=0,两两循环的次数为arr.length-1,8次;第二趟,i=1,
//两两交换循环的次数就为arr.length-1,7次,因为已经把最大的数固定了,就相当于剩下的8个数参与排序,7次两两交换。 if(arr[i]>arr[i+1]){//相邻连个数进行比较,如果第一个数大于第二个数则互换位置。
t = arr[i + 1];
arr[i+1] = arr[i];
arr[i] = t;
flag = true;
}
}
if(flag){
x++;
flag = false;//如果为true则表示交换了位置,如果为false则表示顺序是对的,不需要排序了,可以减少循环的次数
}
else{
break;
}
}
alert(x);//五次
document.write(arr + "<br/>");
js实现冒泡排序的更多相关文章
- JS实现冒泡排序,插入排序和快速排序(从input中获取内容)
以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理 ...
- js实现冒泡排序(bubble sort)快速排序(quick sort)归并排序(merge sort)
排序问题相信大家都比较熟悉了.用js简单写了一下几种常用的排序实现.其中使用了es6的一些语法,并且不仅限于数字--支持各种类型的数据的排序.那么直接上代码: function compare (a, ...
- js数组冒泡排序
文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...
- js数组冒泡排序,快速排序的原理以及实现
冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = ...
- JS数组冒泡排序&去重
冒泡排序: var a = [2,1,4,3,6,5]; for(var d = 0 ; d< a.length; d++){ for(var b = d+1; b < a.length; ...
- JS中冒泡排序,选择排序,快速排序
var arr = [1,4,2,9,7,6,5,4,7,5]; // 冒泡排序(通俗的说就是j 和 j+1打,谁赢了谁去后面) for(var i = 1;i<ar ...
- js之冒泡排序与快速排序
//冒泡排序 let arr = [1, 6, 3, 7, 5, 9, 2, 8]; function sort(arr) { //升序 console.time("冒泡排序耗时" ...
- JS 的冒泡排序
// 冒泡排序 从小到大 function maoPaoPaiXu(arr) { // 控制循环的比较的轮次 for (var i = 0; i < arr.length - 1; i++) { ...
- js模拟冒泡排序动态图(1轮)
代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
随机推荐
- IOS- 数据存储
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...
- September 9th 2016 Week 37th Friday
Within you, I lose myself. 有了你,我迷失了自我. I never had such feeling, maybe just because I never invested ...
- 解决eclipse中maven web工程打包成war(发布到tomcar)时lib中没有jar包的解决方法
可能有两个原因:1.maven中某些jar包下载不下来 从其他地方下载jar文件放到相应maven本地库的.m2里2..classpath文件中缺少(下面代码的作用是制定maven的jar发布路径)& ...
- tableView 局部刷新
//一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:2]; [tableview reloadSections:in ...
- ListView介绍
原文:http://blog.csdn.net/qingye_love/article/details/13772391?utm_source=tuicool&utm_medium=refer ...
- 数据结构和算法 – 7.散列和 Hashtable 类
7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...
- JavaWeb学习之什么是Servlet、如何使用servlet、为什么这样使用、servlet的虚拟路径、关于缺省Servlet(2)
1.什么是Servlet? * 服务器端Java程序,servlet需要交给服务器来运行. * 与javax.servlet.Servlet接口有关的java程序 2.如何使用servlet?[必须] ...
- ListView优化中ViewHolder要不要定义为static静态内部类?
给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...
- c++ 读取txt文件并输出到控制台
代码如下: #include "stdafx.h" #include<iostream> #include<fstream> #include<cst ...
- fis3-postpackager-loader插件说明
fis3-postpackager-loader 静态资源前端加载器,用来分析页面中使用的和依赖的资源(js或css), 并将这些资源做一定的优化后插入页面中.如把零散的文件合并. 注意 此插件做前端 ...