算法——排序——交换排序(1)——冒泡排序

 

算法——排序——交换排序(1)——冒泡排序_交换排序

 

 

什么是冒泡排序

冒泡排序的英文是bubble sort,是八大内部排序算法中的最基础的交换排序算法。

冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。

就像碳酸饮料的气泡一样,汽水中常常有许多小小的气泡哗啦哗啦飘到上面来。

算法——排序——交换排序(1)——冒泡排序_交换排序_02

 

 

代码实现

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的平方)