Java教程

冒泡排序算法

本文主要是介绍冒泡排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原理

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

代码实现

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;
        }
    }

}

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

评价

比较弱小

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

这篇关于冒泡排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!