下面是JavaScript数组基于交换的排序示例【冒泡排序】的完整攻略:
冒泡排序
冒泡排序是最基本的排序算法之一,它的原理是通过比较相邻的元素,将较大的元素交换到右侧,较小的元素交换到左侧,最终将整个数组按照升序排列。
下面是一份基于交换的冒泡排序代码,我们通过代码中加入注释来讲解冒泡排序的实现过程:
function bubbleSort(arr) {
// 外层遍历,控制比较轮数
for (let i = 0; i < arr.length - 1; i++) {
// 内层遍历,控制每轮比较的次数
for (let j = 0; j < arr.length - 1 - i; j++) {
// 如果前一个元素比后一个元素大,则交换它们的位置
if (arr[j] > arr[j + 1]) {
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
return arr
}
上面的代码实现了基于交换的冒泡排序。其核心思想是通过遍历数组来比较相邻元素的大小,如果前一个元素比后一个元素大,则交换它们的位置,重复这个过程,直到整个数组按照升序排列。
接下来,我们通过两个示例来说明冒泡排序的使用方法和效果。
示例一
假设我们有一个包含10个无序元素的整数数组,如下所示:
let arr = [4, 6, 3, 2, 8, 5, 1, 7, 9, 0]
我们可以将这个数组交给bubbleSort函数进行排序:
bubbleSort(arr)
函数的返回值是排好序的数组:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
可以看到,冒泡排序使用起来非常简单,只需要传入一个待排序的数组,就可以得到排好序的数组。
示例二
继续我们的示例,假设我们需要对一个1000个元素的数组进行排序,我们可以编写下面的代码:
let arr = []
for (let i = 0; i < 1000; i++) {
arr.push(Math.floor(Math.random() * 1000))
}
console.time('bubbleSort')
bubbleSort(arr)
console.timeEnd('bubbleSort')
这段代码会创建一个包含1000个随机整数的数组,然后调用bubbleSort函数进行排序,最后使用console.time和console.timeEnd函数来输出排序所需的时间。
在我的电脑上测试,这段代码的输出结果大概是这样的:
bubbleSort: 13.391ms
可以看到,冒泡排序在处理1000个元素的数组时,排序所需的时间非常短,只需要13ms左右。不过,需要注意的是,冒泡排序的时间复杂度是O(n^2),当数组元素数量非常大时,排序所需的时间会变得非常长。因此,在实际应用中,我们需要考虑使用其他更为高效的排序算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript数组基于交换的排序示例【冒泡排序】 - Python技术站