js冒泡排序,js冒泡排序从大到小
大家好,今天小编来为大家解答以下的问题,关于js冒泡排序,js冒泡排序从大到小这个很多人还不知道,现在让我们一起来看看吧!
JS排序之冒泡排序以及写法
时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置
原理
依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。
时间复杂度,空间复杂度,稳定性
1.平均时间复杂度O(n*n)
2.最好情况O(n)
3.最差情况O(n*n)
4.空间复杂度O(1)
5.稳定性:稳定
冒泡排序的写法
两个循环
当i=0的时候,里面的循环完整执行,从j=0执行到j=6,这也就是第一遍排序,结果是将最大的数排到了最后,这一遍循环结束后的结果应该是[8,15,88,55,76,21,39,94]
当i=1的时候,里面的循环再次完整执行,由于最大的数已经在最后了,没有必要去比较数组的最后两项,这也是j<arr.length-1-i的巧妙之处,结果是[8,15,55,76,21,39,88,94]
说到这里,规律就清楚了,北京北大青鸟建议每次将剩下数组里面最大的一个数排到最后面,当第一个循环执行到最后的时候,也就是i=6,此时,j=0,只需要比较数组的第一和第二项,比较完毕,返回。
javascript中的冒泡排序法
冒泡排序的原理是这样的,比方说有五个数字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);
关于js冒泡排序和js冒泡排序从大到小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。