本文主要详细介绍了JS冒泡排序的相关信息,具有一定的参考价值。感兴趣的朋友可以参考一下。
本文分享JS冒泡排序的具体代码,供大家参考。具体内容如下
说明
时间复杂度指的是算法执行所需的时间。
空间复杂度是指运行一个程序所需的内存量。
稳定是指如果a=b,A领先于B,排序后A仍然领先于B。
不稳定是指如果a=b,A排在B之前,排序后可能会改变位置。
--JS冒泡排序--
原理
依次比较两个相邻的值,如果后者小于前者,则将较小的元素排在第一位。按照这个规则,迭代几次,逐步进行,直到顺序正确。
时间复杂度,空间复杂度,稳定性
平均时间复杂度O(n*n)
最佳情况O(n)
最坏情况O(n*n)
空间复杂度O(1)
稳定性:稳定性
冒泡排序的书写方法
var examplearr=[8,94,15,88,55,76,21,39];
函数sortarr(arr){
for(I=0;iarr . length-1;i ){
for(j=0;jarr . length-1-I;j ){
if(arr[j]arr[j 1]){
var temp=arr[j];
arr[j]=arr[j 1];
arr[j 1]=temp;
}
}
}
返回arr
}
sortarr(example arr);
console . log(example arr);
解析
两个周期
当i=0时,里面的循环执行完毕,从j=0到j=6,是第一次排序通过,结果是最大数排在最后。这个循环结束后的结果应该是[8,15,88,55,76,21,39,94]
当i=1时,再次完全执行内部的循环。由于最大的数字已经在末尾,所以没有必要比较数组的最后两项。这也是jarr.length-1-i的巧妙之处,结果是[8,15,55,76,21,39,88,94]
在这一点上,规则是清楚的。每次剩余数组中最大的数都排到后面,当第一个循环执行到最后,也就是i=6时。此时j=0,你只需要比较数组的第一项和第二项。比较之后,返回。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。