目录
- 一、算法原理
- 二、算法分析
- 时间复杂度
- 空间复杂度
- 稳定性
- 三、C语言实现
- 四、Python实现
冒泡排序(Bubble Sort)是一种基础的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
一、算法原理
冒泡排序算法的原理如下:
- 比较相邻的元素。如果第一个比第二个大(升序排序),就交换它们两个;
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数;
- 针对所有的元素重复以上的步骤,除了最后一个;
- 重复步骤1~3,直到排序完成。
二、算法分析
时间复杂度
- 最好情况(已排序):O(n)
- 最坏情况(逆序):O( n 2 n^2 n2)
- 平均情况:O( n 2 n^2 n2)
空间复杂度
- O(1)
稳定性
冒泡排序是稳定的排序算法。
三、C语言实现
#include <stdio.h>
void bubbleSort(int arr[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);printf("Sorted array: \n");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
这段代码首先定义了一个bubbleSort
函数,用于实现冒泡排序。然后,在main
函数中,我们创建了一个待排序的数组,并调用bubbleSort
函数对其进行排序。最后,我们输出排序后的数组。
四、Python实现
def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)print("Sorted array is:")
for i in range(len(arr)):print("%d" % arr[i], end=" ")
结果: