冒泡法排序c++(冒泡法排序C语言最简单)
冒泡法排序
简介
冒泡法排序是一种简单的排序算法,它通过重复地比较相邻元素并交换它们的位置,将列表中的元素排序。该算法因其重复“浮出”最大元素到列表末尾的行为而得名。
原理
冒泡法排序的工作原理如下:1. 从列表的开头开始比较第一个元素与其相邻的元素。 2. 如果第一个元素大于其相邻的元素,则交换这两个元素的位置。 3. 将当前元素与列表中剩余元素重复步骤 1 和 2,直到到达列表末尾。 4. 返回到列表开头并重复步骤 1 到 3,直到列表完全排序。
复杂度
时间复杂度:O(n^2),其中 n 是列表中的元素数量。这是因为最坏情况下,算法需要比较列表中的所有元素以将最大元素浮出到列表末尾。
空间复杂度:O(1),因为该算法不需要任何额外的存储空间。
实现
```cpp void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} } ```
示例
给定列表 [5, 3, 1, 2, 4],冒泡法排序的步骤如下:1. 比较 5 和 3,交换它们的位置([3, 5, 1, 2, 4])。 2. 比较 5 和 1,交换它们的位置([3, 1, 5, 2, 4])。 3. 比较 5 和 2,交换它们的位置([3, 1, 2, 5, 4])。 4. 比较 5 和 4,交换它们的位置([3, 1, 2, 4, 5])。 5. 列表已经排序,因此退出算法。最终排序后的列表为 [1, 2, 3, 4, 5]。
优点
实现简单
空间复杂度低
缺点
时间复杂度为 O(n^2),对于大型列表效率较低
对于已经排序或接近排序的列表,效率不高
**冒泡法排序****简介** 冒泡法排序是一种简单的排序算法,它通过重复地比较相邻元素并交换它们的位置,将列表中的元素排序。该算法因其重复“浮出”最大元素到列表末尾的行为而得名。**原理** 冒泡法排序的工作原理如下:1. 从列表的开头开始比较第一个元素与其相邻的元素。 2. 如果第一个元素大于其相邻的元素,则交换这两个元素的位置。 3. 将当前元素与列表中剩余元素重复步骤 1 和 2,直到到达列表末尾。 4. 返回到列表开头并重复步骤 1 到 3,直到列表完全排序。**复杂度*** 时间复杂度:O(n^2),其中 n 是列表中的元素数量。这是因为最坏情况下,算法需要比较列表中的所有元素以将最大元素浮出到列表末尾。 * 空间复杂度:O(1),因为该算法不需要任何额外的存储空间。**实现**```cpp void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} } ```**示例**给定列表 [5, 3, 1, 2, 4],冒泡法排序的步骤如下:1. 比较 5 和 3,交换它们的位置([3, 5, 1, 2, 4])。 2. 比较 5 和 1,交换它们的位置([3, 1, 5, 2, 4])。 3. 比较 5 和 2,交换它们的位置([3, 1, 2, 5, 4])。 4. 比较 5 和 4,交换它们的位置([3, 1, 2, 4, 5])。 5. 列表已经排序,因此退出算法。最终排序后的列表为 [1, 2, 3, 4, 5]。**优点*** 实现简单 * 空间复杂度低**缺点*** 时间复杂度为 O(n^2),对于大型列表效率较低 * 对于已经排序或接近排序的列表,效率不高