javascript实现冒泡排序的经典排序算法

冒泡排序是最经典的排序算法。它是基于比较排序算法的。时间复杂度为o(n2),其优点是实现简单。n在较低的时间内有更好的性能。



1)算法原理

相邻数据用22种方式比较。小数放在前面,大数放在后面。这样的旅行之后,最小的数字放在第一位,第二次也是如此,所以直到所有的数据排序完成。



2)算法描述

比较相邻元素。如果第一个元素大于第二个元素,交换两个元素。

对每一对相邻的元素,从上一对的开始到结束,都要做相同的工作,所以最后一个元素应该是最大的数;

对以上所有元素重复以上步骤,但最后一个步骤除外;

重复步骤1~3,直到排序完成。

3)Javascript代码实现




功能的冒泡排序(ARR){
VaR len = arr.length;
对于(var i = 0;i < i;i + +){
对于(var j=0;j i i - 1;j + +){
如果(ARR { J } > ARR { j + 1 }){ / /相邻的元素进行比较
VaR温度= ARR { J + 1 }; / /交换单元
{ 1 } = J + ARR ARR {,};
ARR { } =温度{J}.;
}
}
}
报酬; / /返回
}

var arr = { 1,45,37,5,48,15,37,26,29,2,46,4,17,50,52 }; / /调用排序算法
console.log(冒泡排序(ARR)); / /控制台输出结果



该算法是最基本的实现方法。然后,通过设置一个具有里程碑意义的变量位置来对该算法进行改进,将每个位置上最后一个交换的位置记录下来,因为位置位置之后的记录都被排序了,下一类是扫描位置的位置。

改进后的算法如下:




功能bubblesort2(ARR){
var i = arr.length - 1; / /在开始的最后位置扫描
当(i>0){
var位置= 0;符号变量,在当前Exchange位置中表示
对于(var j=0;j < i;j + +){
如果(ARR { J } > ARR { j + 1 }){
位置= j;
VaR温度= ARR { J + 1 };
{ 1 } = J + ARR ARR {,};
ARR { } =温度{J}.;
}
}
i =位置;
}
报酬;
}

var arr = { 1,45,37,5,48,15,37,26,29,2,46,4,17,50,52 };
Console.log (bubbleSort2 (ARR));



传统的冒泡排序在每次行程排序操作中只能找到一个最大值或最小值,我们考虑采用前后两次的方法,每次旅行到冒泡的排名中可以得到两个最终值(最大值和最小值),这样排序次数几乎减半。

改进后的算法如下:




功能bubblesort3(ARR){
Var Low = 0;
VaR高= arr.length-1;
VaR的温度;
同时(低<高)查找最大值{
用于(var =低;j高;j +){
如果(ARR { J } > ARR { j + 1 }){
温度= { 1 }度{J}.;
{ 1 } = J + ARR ARR {,};
ARR { } =温度{J}.;
}
}
-高;修改高的值,向前移动一点
}
在(低>高)的范围内查找{
对于(var =高;j低;j -){
如果(ARR { J } > ARR { j + 1 }){
温度= { 1 }度{J}.;
{ 1 } = J + ARR ARR {,};
ARR { } =温度{J}.;
}
}
+ +低;修改值低,后退一步
}
报酬;
}
var arr = { 1,45,37,5,48,15,37,26,29,2,46,4,17,50,52 };
console.log(bubblesort3(ARR));



4)算法分析



最佳情况:t(n)=o(n)

最坏情况:t(n)=o(n2)

平均数:t(n)=o(n2)

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。