质量基础设施一站式服务工作站,网站优化的核心不包括,网站logo做黑页,珠海中企网站建设公司目录
前言
建议#xff1a;
简介#xff1a;
一、代码实现
二、时空复杂度
时间复杂度#xff1a;
空间复杂度#xff1a;
总结#xff1a; 前言
建议#xff1a;
1.学习算法最重要的是理解算法的每一步#xff0c;而不是记住算法。
2.建议读者学习算法的时候…目录
前言
建议
简介
一、代码实现
二、时空复杂度
时间复杂度
空间复杂度
总结 前言
建议
1.学习算法最重要的是理解算法的每一步而不是记住算法。
2.建议读者学习算法的时候自己手动一步一步地运行算法。 简介
冒泡排序是一种简单但效率较低的排序算法它通过多次遍历待排序的元素比较相邻元素的大小并交换将较大的元素逐步移动到数组的末尾。 一、代码实现 #include stdio.h// 冒泡排序函数
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;}}}
}// 打印数组元素
void printArray(int arr[], int size) {// 遍历数组并打印每个元素for (int i 0; i size; i) {printf(%d , arr[i]);}printf(\n);
}int main() {int arr[] {64, 25, 12, 22, 11};int n sizeof(arr) / sizeof(arr[0]);printf(原始数组\n);printArray(arr, n);// 调用冒泡排序函数bubbleSort(arr, n);printf(排序后的数组\n);printArray(arr, n);return 0;
} 这个简单的C程序首先定义了一个bubbleSort函数该函数接受一个整数数组和数组的大小作为参数并对数组进行冒泡排序。然后通过printArray函数打印原始数组和排序后的数组。在main函数中我们声明一个整数数组调用bubbleSort函数进行排序然后再次调用printArray函数以展示排序结果。 二、时空复杂度 时间复杂度
最好情况 当待排序数组已经是有序的情况下冒泡排序只需进行一次遍历每次比较都不需要交换时间复杂度为线性级别。最坏情况 当待排序数组是逆序的情况下每一轮都需要进行n次比较和交换共需要n-1轮因此时间复杂度为平均情况 在平均情况下冒泡排序的时间复杂度也为因为它总是进行n-1轮遍历每轮都要比较和可能的交换。 空间复杂度
冒泡排序是一种原地排序算法不需要额外的空间因此空间复杂度为O(1)。 三、总结
冒泡排序的主要思想是通过多次遍历数组每次比较相邻元素并交换它们将较大的元素逐步移动到数组的末尾。这个过程重复进行直到整个数组有序。尽管冒泡排序实现简单但对于大型数据集来说效率较低因此在实际应用中可能不太常见但是是考研的重点。