JavaScript中的冒泡排序法
冒泡排序法就是通过比较任意两个相邻的元素,然后循环遍历整个数组,逐步将最大(或最小)的数移到最后一位。当没有相邻的元素需要互换位置的时候即可完成排序。冒泡排序法是常用的简单排序算法,虽然时间复杂度比高级算法如快速排序、堆排序等要高,但是对于小的数据集合,其性能表现要好于其他排序算法。
以下是冒泡排序法的具体实现:
function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
在上述代码中,bubbleSort
函数中传入的参数arr
是待排序的数组。函数首先计算数组的长度len
,然后通过两层循环分别遍历整个数组。对于每个相邻位置的元素,如果前一个元素比后一个元素大(这里默认排序是从小到大),就将它们的位置互换。这样一轮遍历下来,可以将当前数组中最大的元素放到了最后的位置。由于内层循环每次都会将最大的元素移动到数组的末尾,所以外层循环只需遍历数组长度减1轮。
接下来,我们来看看如何使用冒泡排序法。
例如,对于以下数组:
var arr = [2, 3, 1, 5, 4];
可以调用bubbleSort
函数对其进行排序:
var sortedArr = bubbleSort(arr);
console.log(sortedArr); // [1, 2, 3, 4, 5]
又如,对于以下字符串数组:
var strArr = ['banana', 'apple', 'orange', 'pear'];
可以先通过将字符串数组转换为数字数组来实现对字符串数组的排序,然后再用join
方法将数字转换回字符串:
var numArr = strArr.map(function(str) {
return str.length;
});
var sortedNumArr = bubbleSort(numArr);
var sortedStrArr = sortedNumArr.map(function(num) {
return strArr[numArr.indexOf(num)];
});
console.log(sortedStrArr); // ['pear', 'apple', 'banana', 'orange']
这里,我们将字符串数组strArr
通过map
方法转换为包含字符串长度的数字数组numArr
,然后根据数字的大小关系排序,最后将其转换回字符串。需要注意的是,排序后的数字数组中可能有重复的元素,所以在将其转换回字符串时需要通过indexOf
方法找到对应的原始字符串。
以上就是JavaScript中的冒泡排序法的完整攻略和两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的冒泡排序法 - Python技术站