算法说明:
- 冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换 过来。
- 如果有 n 个数进行排序,只需将 n-1 个数归位,也就是说要进行 n-1 趟操作。
- 第 i 趟比较只需要比较 n-i 次。
复杂度分析:
- 冒泡排序的时间复杂度是。
- 这是 一个非常高的时间复杂度。
代码部分:
#include <stdio.h>
int main()
{
int a[101];//支持100个数的比较
int i, j, t, n;
printf("请输入你要对多少个数字进行排序:");
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
scanf_s("%d", &a[i]);
//冒泡核心部分
for (i = 1; i <= n - 1; i++)
for (j = 1; j <= n - i; j++)
{
if (a[j] < a[j + 1])//从大到小排序
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
for (i = 1; i <= n; i++)
printf("%d ", a[i]);
getchar();
getchar();
return 0;
}
输入:
5 2 5 3 8
输出:
8 5 5 3 2
总结:
缺点:
- 时间复杂度太高。//冒泡排序的时间复杂度是 。
优点:
- 解决了桶排序浪费空间的问题。