class Program
{
static void Main(string[] args)
{
Console.WriteLine("冒泡排序");
//外面申明一个标识 来表示 该轮是否进行了交换
bool isSort = false;
//2.特使情况的优化
for (int m = 0; m < arr.Length; m++)
{
//每一轮开始时 默认没有进行过交换
isSort = false;
// 尽一次循环 就需要比较一轮
for (int n = 0; n < arr.Length - 1 - m; n++)
{
//如果 第n个数 比第n+1个数 大 他们就要交换位置
if (arr[n] > arr[n + 1])
{
isSort = true;
// 第二步 交换位置
// 中间商不赚差价
int temp = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = temp;
}
}
//当一轮结束过后 如果isSort这个标识 还是false
//那就意味着 已经是最终的序列了 不需要再判断交换了
if( !isSort )
{
break;
}
}
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
思想:从后往前(或从前往后)两两比较相邻元素的值,若为逆序( A[i - 1] > A[ i ] ),则交换,直到序列比较完。
特点:
n 个数据,则总共需要 n - 1 趟;
每次排序会将一个元素放到最终位置上。