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

     

    做一个优秀的程序媛
  • 相关阅读:
    python笔记-2
    python笔记-1
    生成列表
    内置函数
    装饰器、包的导入
    python3 编码
    python3 初识函数
    python3 文件读写
    python3 流程控制
    python3 数据类型
  • 原文地址:https://www.cnblogs.com/oytt/p/13577942.html
Copyright © 2011-2022 走看看