javascript冒泡排序算法(js冒泡排序从小到大排序)
## JavaScript 冒泡排序算法### 简介冒泡排序(Bubble Sort)是一种简单直观的排序算法。它重复地遍历要排序的列表,每次比较相邻的两个元素,如果它们的顺序错误就交换它们的位置。重复执行这个过程,直到没有需要交换的元素为止,此时列表已经排好序。### 算法原理1.
比较相邻元素:
从列表的第一个元素开始,比较相邻的两个元素。如果第一个元素比第二个元素大(升序排序),则交换它们的位置。 2.
遍历列表:
对列表中的每一对相邻元素重复步骤 1,直到到达列表的末尾。 3.
重复步骤 1 和 2:
重复步骤 1 和 2,直到没有任何元素需要交换位置。### 代码实现```javascript function bubbleSort(arr) {let len = arr.length;let swapped; // 用于标记是否发生交换do {swapped = false; for (let i = 0; i < len - 1; i++) {if (arr[i] > arr[i + 1]) {// 交换 arr[i] 和 arr[i + 1]let temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;swapped = true; }}len--; // 每次循环后,最大的元素已经排到最后,所以下次循环可以减少比较次数} while (swapped); // 如果没有发生交换,说明数组已经有序return arr; }// 示例: let unsortedArray = [5, 2, 4, 6, 1, 3]; let sortedArray = bubbleSort(unsortedArray); console.log(sortedArray); // 输出: [1, 2, 3, 4, 5, 6] ```### 算法分析
时间复杂度:
- 最好情况:数组已经有序,只需遍历一次,时间复杂度为 O(n)。- 最坏情况:数组完全逆序,需要进行 n-1 次冒泡,每次冒泡需要比较 n-i 次,时间复杂度为 O(n^2)。- 平均时间复杂度为 O(n^2)。
空间复杂度:
冒泡排序只使用了常数个额外空间,空间复杂度为 O(1)。### 优缺点
优点:
简单易懂,实现容易。
缺点:
效率较低,尤其对于大规模数据集,时间复杂度较高。
不是一种稳定的排序算法,相同元素的相对位置可能会发生改变。### 总结冒泡排序是一种简单易懂的排序算法,但效率较低。对于小规模数据集或学习排序算法原理来说是一个不错的选择,但在实际应用中,通常会选择更高效的排序算法。
JavaScript 冒泡排序算法
简介冒泡排序(Bubble Sort)是一种简单直观的排序算法。它重复地遍历要排序的列表,每次比较相邻的两个元素,如果它们的顺序错误就交换它们的位置。重复执行这个过程,直到没有需要交换的元素为止,此时列表已经排好序。
算法原理1. **比较相邻元素:** 从列表的第一个元素开始,比较相邻的两个元素。如果第一个元素比第二个元素大(升序排序),则交换它们的位置。 2. **遍历列表:** 对列表中的每一对相邻元素重复步骤 1,直到到达列表的末尾。 3. **重复步骤 1 和 2:** 重复步骤 1 和 2,直到没有任何元素需要交换位置。
代码实现```javascript function bubbleSort(arr) {let len = arr.length;let swapped; // 用于标记是否发生交换do {swapped = false; for (let i = 0; i < len - 1; i++) {if (arr[i] > arr[i + 1]) {// 交换 arr[i] 和 arr[i + 1]let temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;swapped = true; }}len--; // 每次循环后,最大的元素已经排到最后,所以下次循环可以减少比较次数} while (swapped); // 如果没有发生交换,说明数组已经有序return arr; }// 示例: let unsortedArray = [5, 2, 4, 6, 1, 3]; let sortedArray = bubbleSort(unsortedArray); console.log(sortedArray); // 输出: [1, 2, 3, 4, 5, 6] ```
算法分析* **时间复杂度:** - 最好情况:数组已经有序,只需遍历一次,时间复杂度为 O(n)。- 最坏情况:数组完全逆序,需要进行 n-1 次冒泡,每次冒泡需要比较 n-i 次,时间复杂度为 O(n^2)。- 平均时间复杂度为 O(n^2)。 * **空间复杂度:** 冒泡排序只使用了常数个额外空间,空间复杂度为 O(1)。
优缺点**优点:*** 简单易懂,实现容易。**缺点:*** 效率较低,尤其对于大规模数据集,时间复杂度较高。 * 不是一种稳定的排序算法,相同元素的相对位置可能会发生改变。
总结冒泡排序是一种简单易懂的排序算法,但效率较低。对于小规模数据集或学习排序算法原理来说是一个不错的选择,但在实际应用中,通常会选择更高效的排序算法。