javascript中的冒泡排序法

这是我看js教程里的冒泡排序法,有没有高手能给我解释一下冒泡排序为什么要两层循环!如果这个例子不好的话,请高手帮忙举一个简单易懂的例子!还有内层循环的次数为什么是this.length-i。谢谢了!

冒泡排序的原理是这样的,比方说有五个数字54321,要按从小到大排列;
首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成45321,然后比较第二个和第三个,交换位置,变成43521,然后第三个和第四个,第四个和第五个,这样一次循环下来,变成43215
所以,一层循环的效果就是挑出最大的一个数字5,冒泡到最后面。但是还要挑出第二大,第三大的数字,等等。所以一层循环根本就不够用,必须再套一层才行。像这个例子,五个数字,起码要进行四轮循环才行。至于为什么要this.length-i,是因为第一次比较五个数字,第二个只要比较前四个就行了,第五个肯定是最大的了。。
var array = [5, 4, 3, 2, 1];
var temp = 0;
for (var i = 0; i < array.length; i++)
{
for (var j = 0; j < array.length - i; j++)
{
if (array[j] > array[j + 1])
{
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
console.log(array);
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-08-09

AVA气泡分类法

拓展资料

气泡排序的原理是,有五个数字54321,例如从小到大排列。

首先比较前两个,5个和4个,如果第一个小于第二个,没有运算,如果第一个大于第二个,则交换两个位置,即45321个,然后第二个和第三个,交换位置,变成43521个,然后第三个和第四个,第四个和第五个,这样的时间周期下来,转向。进入43215

因此,一个循环的效果是挑选出最大的数字5并将其泡泡到底。但是选择第二,第三等等。因此,一层循环是不够的,它必须是另一层。例如,五个数字,至少四个周期。至于为什么这个,长度-i,是因为第一个比较五个数字,第二个只要第一个四将做,第五个必须是最大的。

var数组=〔5, 4, 3,2, 1〕;

VATP=0;

对于(var i=0;i <数组,长度;i++)

{

对于(var j=0;j<数组,长度-i;j++)

{

IF(数组[j] >数组[j+1])

{

TEMP=数组[J+1 ];

数组[j+2]=数组[j];

数组[j]=TEMP;

}

}

}

控制台,日志(数组);

本回答被网友采纳
第2个回答  2018-07-22

this.length-i。 是因为i代表已经循环的次数,减i 可以降低遍历次数,你不减i 也可以实现的,只是会增加遍历次数!

资料拓展:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成

本回答被网友采纳
第3个回答  2012-10-10
冒泡,你去了解他的原理,这样写最直观,可以用一次循环,但是有些人不容易理解两层循环,就别说一层了

JavaScript 常见的三种数组排序方式
选择排序英文叫法是 Selection sort,这也是一种简单直观的排序方法。这种排序首先会在未排序的数组中找到最小或者最大的元素,存放在排序数组的起始位置。然后再从未排序的数列中去找到这个数组中第二大或这第二小的数放在已排序的数之后,以此类推,不断重复直到所有元素排列完毕。算法思路(以按递增顺序...

JavaScript 冒泡排序算法
冒泡排序是一种基本的排序算法,通过反复比较相邻元素并交换来实现数组排序。排序规则可为递增或递减。步骤:以数组 arr = [1, 4, 2, 5, -2, 3] 为例,从第一个元素开始,若前一个元素大于后一个元素则交换位置,以此类推至数组最后。每次遍历后,数组中最大值移至末尾。遍历至未排序元素结束...

javascript中的冒泡排序法
冒泡排序的原理是这样的,比方说有五个数字54321,要按从小到大排列;首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成45321,然后比较第二个和第三个,交换位置,变成43521,然后第三个和第四个,第四个和第五个,这样一次循环下来...

【JavaScript】JS常见排序方法
JavaScript中的排序算法多种多样,从基础到进阶,各有其特点。先来看看入门级的冒泡排序和选择排序。冒泡排序通过两两比较元素,反复交换直到序列有序,时间复杂度为O(n^2)。选择排序则是通过双重for循环,每次从未排序部分选取最小元素放到已排序部分,同样为O(n^2)。插入排序则稍显复杂,它是通过不断...

JavaScript实现十大排序算法(图文详解)
归并排序概要 归并排序,利用分治思想,将大的数组,分解为小数组,直至单个元素。然后,使用选择排序的方式,对分拆的小数组,进行回溯,并有序合并,直至合并为一个大的数组。效果图小数组合并的过程解法functionmergeSort(arr){returnsort(arr,0,arr.length-1);\/\/注意右区间是arr.length-1\/\/sort方法,进行递归function...

怎么用javascript实现n个数的比较,按照从小到大排列输出 用两个for语 ...
你可以使用冒泡排序法 冒泡排序的原理是这样的,比方说有五个数字54321,要按从小到大排列;首先比较前两个,就是5和4,如果第一个小于第二个,不做操作,如果第一个大于第二个,那么交换二者的位置,即变成45321,然后比较第二个和第三个,交换位置,变成43521,然后第三个和第四个,第四个和第...

javascriptsort数组排序方法和自我实现排序方法小结
一、JavaScript内置的数组排序方法 1. `sort`方法:这是JavaScript中用于对数组进行排序的内置方法。它可以按照字母顺序或自定义的排序规则对数组进行排序。默认排序方式为字母顺序。二、自我实现排序方法 1. 冒泡排序:这是一种简单的排序算法,通过重复地遍历待排序序列,比较每对相邻的项,并将顺序错误的...

JavaScript使用函数完成数组翻转
let cv = [];for (i = bn.length; i >= 0; i--) { cv[cv.length] = bn[i];} return cv;} let a = sb([5, 6, 9, 8, 42, 236, 2]);console.log(a);使用函数进行冒泡排序:function a(b) { for (let i = 0; i < b.length - 1; i++) { for (let j = 0...

用javascript语言编写一个程序输入10个整数显示出最大值和最小值_百 ...
function f(){ var numbers = prompt("请输入10个整数, 以 ',' 分割"); if(!\/^(\\d+,){9}\\d+$\/.test(numbers)){ alert("输入不合法"); return; } alert("最大值为:"+Math.max.apply(null, numbers.split(","))+"---最小值为: " + Math.min.apply(null...

javascript中var str="1,5,3,4,2"想要得到 str="1,2,3,4,5"
function load(){ str="1,5,3,4,2" var arr=new Array();arr=str.split(","); for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } }}alert(arr);} ...

相似回答