算法——排序——交换排序(1)——冒泡排序
什么是冒泡排序
冒泡排序的英文是bubble sort,是八大内部排序算法中的最基础的交换排序算法。
冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。
就像碳酸饮料的气泡一样,汽水中常常有许多小小的气泡哗啦哗啦飘到上面来。
代码实现
void BubbleSort(int *a,int len)
{
//经典冒泡排序算法,假设是从小到大排序
for (int i = 0; i < len - 1; i++)
//第一层循环表示要排序多少个数字,因为不管是从大到小还是从小打大,最后一个或者第一个数都是确定的是最大的或者最小的
//所以就可以只用排序8个数字就好了
{
for (int j = 0; j < len - i-1; j++)
{
//对于已经排好的就不用管了,就排排好了的前面的,所以就是len-i-1了
if (a[j] > a[j + 1])
{
a[j] = a[j] + a[j + 1];
a[j + 1] = a[j] - a[j + 1];
a[j] = a[j] - a[j + 1];
}
}
}
for (int i = 0; i < len; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
算法效率
该算法的时间频度T(n)=4*(1+2+3+....+n-1)=2n的平方+2n
T(n) = O(n的平方)