冒泡排序算法
冒泡排序算法
冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。
算法步骤如下:
- 比较相邻元素,如果前一个比后一个大,就交换它们
- 对每一对相邻元素重复上述操作,直到数列末尾
- 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
- 直到没有元素需要比较时,排序完成
该算法的时间复杂度为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; // 如果没有交换,说明已经排序完成,提前退出循环}
}