其实鉴于冒泡排序的算法时间复杂度是O(n ^ 2),所以现在实际上并不为很多人所推荐使用。但是,作为经典中的经典,我们还是需要掌握的。
源码展示:
#include <stdio.h>
int main()
{
printf("请输入排序的数据个数:");
int n;
scanf("%d", &n);
int a[n + 1];
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
for(int i = 1; i <= n - 1; i++)
{
for(int j =1; j <= n - i; j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i = 1; i <= n; i++)
{
printf("%d ", a[i]);
}
getchar();getchar();
return 0;
}
核心的代码段:
实际上就是嵌套循环,最外层执行次数是 n - 1,里面一层执行次数是 n - i
for(int i = 1; i <= n - 1; i++)
{
for(int j =1; j <= n - i; j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
执行结果展示:
PS:冒泡排序的算法关键在于它的时间复杂度!!!!!!!