zoukankan      html  css  js  c++  java
  • 【7】算法排序 (冒泡排序)

    中心思想:

      依次比较相邻的两个数.

    时间复杂度:

    其它博文都没有讲过的一个重要知识点:

      两两相比, 每比一次,最后一个就会被排好序,因此每一次比较的长度逐渐减小

        每轮都是从头开始比较

    完整代码

    #include <stdio.h>
    
    // 最好的情况,正序
    // 最坏的情况,倒序
    void PrintSort(int * a, int n)
    {
            int i;
            for (i=0; i<n; i++) {
                    printf("%d  ", a[i]);
            }
            printf("
    
    ");
    }
    
    void PopSort(int * a, int n)
    {
            int flag = 0;
            int i, j;
            for (i=0; i<n-1; i++) {
                    flag = 1;
                    for (j=0; j<n-1-i; j++) {
                            if (a[j+1] < a[j]) {
                                    flag = 0;
                                    a[j] = a[j] ^ a[j+1];
                                    a[j+1] = a[j] ^ a[j+1];
                                    a[j] = a[j] ^ a[j+1];
                            }
                    }
    
                    // 优化,如果没有可排序的数据,说明已经全部有序,没必要再继续比较
                    if (flag == 1) {
                            printf("已排好序, i=%d : ", i);
                            break;
                    }
            }
            PrintSort(a, n);
    }
    
    int main()
    {
            int a[11] = {33, 40, 1, 14, 7, 35, 27, 9, 55, 80, 61};
            PopSort(a, 11);
    
            int b[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            PopSort(b, 10);
    }

     

    做一个优秀的程序媛
  • 相关阅读:
    【转载】SG定理
    P3235 [HNOI2014]江南乐(Multi-Nim)
    斐波那契数列
    WC2021游记
    线性基性质证明和应用
    「NOI2018」屠龙勇士
    XiaoMi Interview Log
    打靶训练
    八皇后问题
    Docker的一些常用
  • 原文地址:https://www.cnblogs.com/oytt/p/13577942.html
Copyright © 2011-2022 走看看