javascript学习5-练习之2冒泡排序算法

复习冒泡排序算法,同时自己也写了一个排序算法。

实现效果:

1.自己的算法思想:

数组中数据取第一个为默认最小,依次和后面每个数据比较,只要有比其小的就交换直至找出最小的。

然后将第二个数据与其后面所有数据比较,找出最小,依次重复

2.冒泡排序算法思想:

数据从最低端到最高端为

a[n]

......
a[0]

第一轮:将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]....a[n-1]和a[n]每次将大的往上冒

第二轮:
将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]...a[n-2]和a[n-1]每次大的往上冒,注意此时第一轮最大的已经排出来,故不需要将[n-1]与[n]相比较

...

第n轮:将a[0]与a[1]比较高者往上冒。然后 a[1]与a[2]比较,大的往上冒。

此处前面已经排出来了n-1个最大的,一共n+1个数,故此时只有a[0]和a[1]两个没有比出最大的了。到第n轮,数据比较完成。

具体代码如下

1.我自己的算法代码


 1 //自己的排序算法
2 var s=[1,2,3,5,77,22,11,14,12,24];
3 //排序前
4 document.write("<br/>自己的排序,排序前:<br/>"+s);
5 for (var i=0;i<s.length-1 ;i++ )
6 {
7 for (var j=i+1;j<s.length;j++ )
8 {
9 if(s[i]>s[j])
10 {
11 var temp=s[j];
12 s[j]=s[i];
13 s[i]=temp;
14 }
15 }
16 }
17 //排序后
18 document.write("<br/>自己的排序算法,排序后:<br/>"+s);

2.冒泡排序算法:


 1 //正确的冒泡排序算法
2 var flag=false;
3 document.write("<br/>冒泡排序,排序前:<br/>"+s);
4 for (var i=0;i<s.length-1 ;i++ )
5 {
6 for (var j=0;j<s.length-1-i ;j++ )
7 {
8 if(s[j]>s[j+1])
9 {
10 var temp=s[j];
11 s[j]=s[j+1];
12 s[j+1]=temp;
13 flag=true;
14 }
15 }
16 if(flag)
17 {
18 flag=false;
19 }
20 else
21 {
22 break;//代表一次也没有交换,那么数据完全是顺序的,不需要再执行for循环
23 }
24 }
25 document.write("<br/>冒泡排序,排序后:<br/>"+s);

javascript学习5-练习之2冒泡排序算法,码迷,mamicode.com

时间: 2024-11-17 21:13:28

javascript学习5-练习之2冒泡排序算法的相关文章

冒泡排序算法的JavaScript实现

作为经典的排序算法之一,冒泡排序在JavaScript中也有多种实现方式. 在一些最常见的实现中会声明临时变量,在另一些不必声明临时变量的实现中则可能只支持数值数组或字符串数组(二者之一). 下面介绍两种[无须声明临时变量],[对数值数组和字符串数组都适用]的实现方式. ES5版: var arr = [5, 25, 2, 53, 22, 10]; function bubbleSort(arr) { for (var j = 1, len = arr.length; j < len; j++)

javascript学习6-练习之3二分查找算法

二分查找算法,对数据进行查找并且显示位置. 核心思想:将所查找数据与查询数组中间的数进行比较,findVal<midVal,则在左边进行二分查找,否则在右边进行二分查找递归调用 具体代码如下: 1 //二分查找 2 var string2=[1,3,42,88,123,143]; 3 var leftIndex=0; 4 var rightIndex=5; 5 function binarySearch(string2,findVal,leftIndex,rightIndex) 6 { 7 if

我的Java开发学习之旅------&gt;Java经典排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 一.算法原理 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.

JavaScript学习记录day7-高阶函数

JavaScript学习记录day7-高阶函数 [TOC] 1. 什么是高阶函数 高阶函数英文叫Higher-order function.那么什么是高阶函数? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 一个最简单的高阶函数: function add(x, y, f) { return f(x) + f(y); } 当我们调用add(-5, 6, Math.abs)时,参数x,

冒泡排序算法可视化

在百度前端技术学院的任务列表那里看到了有一个任务是要求用javascript实现可视化的排序算法,感觉很有趣,就稍微研究了一下,本来是想实现冒泡排序算法和快速排序算法的可视化的,可是快速排序在要如何实现可视化这一步上感觉有一点难度,于是就暂时放弃了. 冒泡排序原理 冒泡排序我们应该都不陌生吧?很简单的两个for循环就可以实现了,其基本原理是:在一开始的时候,比较第一第二个数,如果如果第一个数比第二个数大的话则交换二者位置,在比较第二个和第三个数,同样的如果第二个数比第三个数大的话,则交换二者位置

我的Javascript学习路程(0):开始学习吧

我自己也有一本Javascript书籍,是自己上大学的时候学校给提供的,现在,我依旧带着这本书.我决定要把这本书在重新温习一下.然后,开启下面的Javascript之旅.这是我看到博客园一位园友写的,感觉,自己也应该重新读一次Javascript. 1. 从头到尾对一遍<Javascript高级程序设计>,不懂的地方可以暂时掠过,给自己对javascript有一个大体的印象 2. 认认真真的读完这本书<编写可维护的javascript>,从编码规范,技巧,模式,等各个方面深入体会j

最棒的 JavaScript 学习指南(2018版)

译者注:原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南.新人上手.Webpack.性能.基础概念.函数式编程.面试.教程案例.Async Await.并发.V8.机器学习.数据可视化.调试.单元测试等章节,非常适合用于对自己 JavaScript 技术栈的比对,用于查漏补缺,适合收藏阅读.有删减.文中如有错误,欢迎评论指出. 在过去的一年间(2017年),我们对比了近24000篇 JavaScript 文章,并从中挑选出了最好的55篇.我们做了这个目录,认为

Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本知识: 数组的定义:数组(Array)是相同数据类型的数据的有序集合. 数组是引用数据类型. 数组的三个特点: [1]数组长度是确定.数组一旦申请完空间,长度不能发生变化,用length属性访问. [2]数组的元素都是同一数据类型. [3]数组是有序的 .每个元素通过下标/索引标记,索引从0开始.

javascript学习

javascript 学习 title: Javascripttags: javascript,学习grammar_cjkRuby: true--- 定义变量 三种形式 var name; var name = "zhang san"; var name; name = "zhang san"; Javascript 的数据类型 6种数据类型 字符串单引号或双引号 var name = "zhang san"; var name = 'zhang