冒泡排序算法
冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。

算法步骤如下:

  1. 比较相邻元素,如果前一个比后一个大,就交换它们
  2. 对每一对相邻元素重复上述操作,直到数列末尾
  3. 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
  4. 直到没有元素需要比较时,排序完成

该算法的时间复杂度为O(n²),在最坏情况下需要进行n(n-1)/2次比较。虽然效率不高,但由于实现简单,常被用于教学和简单场景。优化版本可以通过设置标志位来提前终止排序过程。冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。

算法步骤如下:

  1. 比较相邻元素,如果前一个比后一个大,就交换它们
  2. 对每一对相邻元素重复上述操作,直到数列末尾
  3. 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
  4. 直到没有元素需要比较时,排序完成

该算法的时间复杂度为O(n²),在最坏情况下需要进行n(n-1)/2次比较。虽然效率不高,但由于实现简单,常被用于教学和简单场景。优化版本可以通过设置标志位来提前终止排序过程。
个人学习记录一下,以免忘记

bool isSort = false;    
for (int m = 0; m < ints.Length; m++)  // 外层循环控制排序趟数
{
    isSort = false;     // 每趟排序开始前,假设没有交换
    for (int n = 0; n < ints.Length-1-m; n++)    // 内层循环控制每一趟排序多少次,-m是为了避免重复比较
    {
        if (ints[n] > ints[n + 1])
        {
            isSort = true; // 假设有交换
            int temp = ints[n];     // 建立中介值,交换两个元素
            ints[n] = ints[n + 1];
            ints[n + 1] = temp;
        }
    }

    if (!isSort)    // 如果假设没有交换,则说明排序完成
    {
        for (int i = 0; i < ints.Length; i++)
        {
            Debug.Log(ints[i]);
        }
        break; // 如果没有交换,说明已经排序完成,提前退出循环
    }
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐