冒泡排序算法

原理

通过将相邻的数相比较,永远让大的数在右边,一轮下来就可以让最大的数像泡泡一样浮到最右边,再把最右边的去掉,对剩下的采取同样的操作,反复即可

代码实现

void sort(int *arr, int n)
{
    for (int j = n - 1; j > 0; j--)
    {
        for (int i = 0; i < j; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                swap(&arr[i], &arr[i + 1]);
            }
        }
    }
   
}

优化思路

当发现一轮下来没有发生交换的时候,说明序列已经排好了,可以停止算法了。

void sortP(int *arr, int n)
{
   
    for (int j = n - 1; j > 0; j--)
    {
        int flag = 0;

        for (int i = 0; i < j; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                swap(&arr[i], &arr[i + 1]);
                flag++;
            }

           
        }

        if (flag == 0)
        {
            return;
        }
    }

}

更优化还可以记录不发生交换的边界,提前跳过已经排好序的部分

评价

比较弱小

第二简单的算法,但是比选择强点

上一篇:指针


下一篇:Linux服务器设置虚拟内存