js写一个冒泡还有选择,注释多写些
时间: 2023-06-01 18:03:59 浏览: 44
冒泡排序:
冒泡排序是一种简单的排序算法,它通过不断交换相邻元素的位置,将较大的元素逐渐“浮”到数组的末尾。冒泡排序的时间复杂度为O(n^2)。
代码实现:
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;
}
选择排序:
选择排序是一种简单的排序算法,它每一轮选择一个最小的元素,将其放置在已排序部分的末尾。选择排序的时间复杂度为O(n^2)。
代码实现:
function selectionSort(arr) {
// 外层循环控制排序的轮数
for (let i = 0; i < arr.length - 1; i++) {
let minIndex = i; // 用来记录最小元素的索引
// 内层循环从未排序部分找出最小元素
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 将最小元素放置到已排序部分的末尾
let temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
注释解释:
1. 冒泡排序和选择排序都是基于比较的排序算法。
2. 冒泡排序的核心思想是比较相邻元素,如果它们的大小关系不正确,就交换它们的位置。
3. 选择排序的核心思想是每一轮选择一个最小的元素,将其放置在已排序部分的末尾。
4. 冒泡排序的时间复杂度为O(n^2),选择排序的时间复杂度也为O(n^2)。
5. 冒泡排序和选择排序都是稳定排序算法,它们不会改变相同元素的相对顺序。
6. 冒泡排序和选择排序都是原地排序算法,它们不需要额外的空间来存储结果。