冒泡排序

作者: 卡布萨岛 | 来源:发表于2018-10-18 07:15 被阅读0次

    冒泡算法

    冒泡排序的基本思想是:每次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来

    1、从第一个数据开始,与第二个数据相比较,如果第二个数据小于第一个数据,则交换两个数据的位置。
    2、指针由第一个数据移向第二个数据,第二个数据与第三个数据相比较,如果第三个数据小于第二个数据,则交换两个数据的位置。
    3、依此类推,完成第一轮排序。第一轮排序结束后,最大的元素被移到了最右面。
    4、依照上面的过程进行第二轮排序,将第二大的排在倒数第二的位置。
    5、重复上述过程,没排完一轮,比较次数就减少一次。

    代码:

    #include <stdio.h>
    
    int main()
    {
       int a[10],i,j,t,n = 10; 
        for(i = 1; i <= n; i++)
        {
            a[i] = i - 1;
        }
        //核心部分
        for(i = 1; i <= n; i++)
            for(j = 1;j <= n - i; j++)
            {
                if(a[j] <= a[j + 1])
                {
                    t = a[j];a[j] = a[j + 1];a[j + 1] = t;
                }
            }
       for(i = 1; i <= n; i++)
           printf("%d ",a[i]);
        getchar();
       return 0;
    }
    

    运行结果:

    9 8 7 6 5 4 3 2 1 0 
    

    时间复杂度:

    O(N²)
    

    总结:如果有n个数进行排序,只需将n-1个数归位,也就是说要进行n-1趟操作,而“每一趟”都需要从第1位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数,已经归位的数无需在比较

    相关文章

      网友评论

        本文标题:冒泡排序

        本文链接:https://www.haomeiwen.com/subject/rkzdzftx.html