冒泡排序算法
冒泡排序是一种基础的排序算法,通过多次遍历数列并交换相邻元素实现排序。每次遍历将最大元素"冒泡"至末尾,遍历次数依次减少。其时间复杂度为O(n²),适合教学和小规模数据排序。示例C#代码展示了优化版本,使用标志位isSort检测是否发生交换,若无交换则提前终止排序,提高效率。核心代码包含嵌套循环,外层控制遍历次数,内层进行相邻元素比较和交换。这种实现既保留了算法简单性,又通过优
冒泡排序算法
冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。
算法步骤如下:
- 比较相邻元素,如果前一个比后一个大,就交换它们
- 对每一对相邻元素重复上述操作,直到数列末尾
- 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
- 直到没有元素需要比较时,排序完成
该算法的时间复杂度为O(n²),在最坏情况下需要进行n(n-1)/2次比较。虽然效率不高,但由于实现简单,常被用于教学和简单场景。优化版本可以通过设置标志位来提前终止排序过程。冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。
算法步骤如下:
- 比较相邻元素,如果前一个比后一个大,就交换它们
- 对每一对相邻元素重复上述操作,直到数列末尾
- 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
- 直到没有元素需要比较时,排序完成
该算法的时间复杂度为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; // 如果没有交换,说明已经排序完成,提前退出循环
}
}

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