js冒泡排序和选择排序,js冒泡排序和快速排序
在本文中,我们将学习JavaScript中冒泡排序和选择性排序的知识。冒泡法每次比较都需要立即交换,而选择性排序就是找出最小的未排序数,与所在位置的元素交换。排序交换次数较少,一定程度上提高了运行效率。希望对大家有帮助。
JavaScript冒泡排序与选择排序
冒泡排序
原则:
比较两个相邻的元素,将具有较大值的元素向右交换,直到最右边。注意核心是相邻的。
想法:
依次比较两个相邻的数字,将较小的数字放在前面,较大的数字放在后面。第一轮过后,数组中最大的数字将在后面。
第二轮:然后该数组从第一个数字开始依次比较其余数字中的相邻数字,最大的数字在后面。
重复这些步骤,直到排序完成。
注意:到倒数第二轮结束,最后一轮还剩一个数,一定是最小的,不用排序。也就是说,只有排序数组的长度减少了一轮(arr.length-1)。
算法可视化:
代码如下:
脚本
函数ismaopao(arr) {
//控制比较回合数
for(var I=0;I arr . length-1;i ) {
//冒泡排序,两两交换,从头比较(大数下沉)
for(var j=0;j排列长度-1-I;j ) {
//arr.length-1-i,因为前面的判断已经找到了最大值,所以不需要和找到的大数进行比较。
if (arr[j] arr[j 1]) {
var a;
a=arr[j];
arr[j]=arr[j 1];
arr[j 1]=a;
}
}
}
返回arr
}
console.log(ismaopao([6,3,4,5,2,1])
/script结果如下:
选择排序
想法:
假设数组第一个位置的数字是最小的,然后将它与下面的每个数字进行比较。只要找到较小的数,就会交换值对应的下标。注意是下标。第一轮搜索结束后,可以锁定到最小位置(也就是找到下标),然后交换值。
第二轮假设第二个位置的数字最小。此时,数组的第一个值(因为它已经是第一轮中的最小值)被忽略,然后用后面的最小值交换下标,锁定后再交换值。
重复这些步骤,直到排序完成。
注意:到倒数第二轮结束时,最后一轮还剩一个数,一定比前面的数大,所以不用排序。也就是说,只有排序数组的长度减少了一轮(arr.length-1)。
算法可视化:
代码如下:
没有包裹。可以自己包装。
脚本
//选择排序,小于冒泡排序。
var arr=[5,3,4,2,1]
var min=0;//定义一个最小值作为数组的下标
for(var I=0;I arr . length-1;i ) {
min=I;
for(var j=I 1;j排列长度;j ) {
if (arr[min] arr[j]) {
min=j;//交换下标,即交换位置。
}
}
var a=0;
//现在min的值是数组最小值对应的下标,
//然后和下标为I的对应数组中的值交换,I随每轮变化。
a=arr[min];
arr[min]=arr[I];
arr[I]=a;
}
console . log(arr);
/script结果如下:
相关视频教程推荐:jQuery视频教程以上是一分钟透彻了解JavaScript冒泡排序和选择性排序的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。