冒泡排序的过程就像它的名字一样,我们把较小的数比作气泡,排序的过程就是气泡不断向上冒的过程,越小的数冒得越高。如下边的数组,总共有五个元素,从右向左开始比较,需要比较四轮;每次比较的次数随着比较的轮数,也在减小。
口诀(升序):
N个数字来排队,连连相比小考前,
外层循环N-1,内层循环N-1-i,
/// <summary>
/// 冒泡升序
/// </summary>
public static void array()
{
int[] array = new int[] { 1, 3, 2, 5, 4, 7, 6, 8, 9 };
int temp = 0;
for (int i = 0; i < array.Length; i++)
{
for (int j = array.Length - 1; j > i; j--)
{
if (array[i] > array[j]) //每个数都比较n次,如果array[i]>array[j]成立,则交换两个数,升序
{
temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
}
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + "\n");
}
}
/// <summary>
/// 冒泡排序,降序
/// </summary>
public static void sort()
{
int[] sort = new int[] { 1, 3, 2, 5, 4, 7, 6, 8, 9 };
int temp = 0;
//开始排序--使用冒泡排序
for (int i = 0; i < sort.Length - 1; i++) //控制比较多少轮
{
//将最小的元素交换到最后
for (int j = 0; j < sort.Length - 1 - i; j++) //控制每轮比较多少次
{
if (sort[j] < sort[j + 1]) //如果sort[j]<sort[j + 1]成立,则交换两个数,降序
{
temp = sort[j];
sort[j] = sort[j + 1];
sort[j + 1] = temp;
}
}
}
for (int i = 0; i < sort.Length; i++)
{
Console.Write(sort[i] + "\n");
}
}