核心思想是相邻的两个数做比较
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
缺点是重复比较耗费性能
https://visualgo.net/en/sorting
static void Main(string[] args)
{
//定义数组
int[] sum = { 8, 5, 6, 7, 9, 0, 2, 1, 4, 3 };
//外循环 要比较的次数
for (int i = 0; i < sum.Length - 1; i++)
{
//内循环相邻俩个数值作比较比较,一趟需要比较sum.leng-i-1次可以得出最大值,一趟比较下来发现大的做交换
for (int j = 0; j < sum.Length - i - 1; j++)
{
//发现大的就交换 升序比较
if (sum[j] > sum[j + 1])
{
int temp = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = temp;
}
}
}
foreach (int temp in sum)
{
Console.Write(temp + " ");
}
Console.ReadKey();
}
改进后的算法
int[] sum = { 15, 8, 10, 6, 5 };
bool swaped = true;
for (int i = 0; i <sum.Length-1&&swaped; i++)
{
swaped = false;
for (int j = 0; j < sum.Length-1-i; j++)
{
if (sum[j]>sum[j+1])
{
int temp = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = temp;
swaped = true;
}
}
}