-
冒泡排序的基本思想:
每次比较两个相邻的元素,如果他们的位置错误就把它们交换过来。 -
冒泡排序过程
每次比较相邻的两个数,如果后面的数比前面的大,则交换这两个数的位置。一直比较下去直到最后两个数比较完毕后,最小的一个数就是最后一个了。就如同一个气泡,一步一步往后“翻滚”,直到最后一位。
所以这个排序的方法有一个很好听的名字“冒泡排序” -
如果有n个数进行排序,只需将n-1个数归位,就是说要进行n-1趟操作。
-
已经归位的数则无须再进行比较,比较个数为j-i
实现代码:
#include <stdio.h>
int main()
{
int a[100],i, j, n, t;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (i=0; i<n-1;i++)
{
for (j=0; j<n-i;j++)
{
if (a[j]<a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for (i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
- 时间复杂度
不难看出,冒泡排序的时间复杂度是O(N*N),n的平方,
这是一个非常高的时间复杂度的算法。
以上内容均来自于人民邮电出版社出版的啊哈!算法!!!!!作者纪磊,有需要的可以直接购入图书,以上是本人的学习笔记。