排序算法

1. 冒泡排序

  • 《数据结构(C++语言版)》 邓俊辉

    void bubblesort1A(int A[], int n){ // 起泡排序算法(版本 1A): 0 <= n
      bool sorted = false;  // 整体排序标志,首先假定尚未排序
      while (!sorted){  // 在尚未确认已全局排序之前,逐趟进行扫描交换
          sorted = true;  // 假定已经排序
          for (int i = 1; i < n; i++) {  // 自左向右逐对检查当前范围 A[0,n) 内的各相邻元素
              if (A[i-1] > A[i]) { // 一旦 A[i-1] 与 A[i] 逆序,则
                  swap(A[i-1]j, A[i]);  // 交换之,并
                  sorted = false; // 因整体排序不能保证,需要清除排序标志
              }
          }
          n--;  // 至此末尾元素必然就位,故可以缩短待排序序列的有效长度
      }
    }  // 借助布尔型标志位 sorted,可以及时提前退出,而不致总是蛮力地做 n-1 趟扫描交换
Last modification:September 10, 2019
如果觉得我的文章对你有用,请随意赞赏