![](https://img.haomeiwen.com/i8617976/d006d467a9135a17.png)
image.png
![](https://img.haomeiwen.com/i8617976/53f24bb51da795d4.png)
image.png
int[] a = { 6, 5, 3, 1, 8, 7, 2, 4 };
int left = 0;//数组最左边的数下标为0
int right = a.Length - 1;//数组最右边的数下标为总长度-1
while (left < right)//如果左边的数小于右边(或者右边的数大于左边)
{
for (int i = left; i < right; i++)//前半轮,将最大元素放到后面,从前往后
{
if (a[i] > a[i + 1])//如果前一个数大于后一个数
{
int temp = a[i];//前后两个数交换顺序
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
right--;//准备进入从后向前的循环
for (int i = right; i > left; i--)//后半轮,将最小元素放到前面,从后往前
{
if (a[i - 1] > a[i])//如果前一个数大于后一个数
{
int temp = a[i - 1];//前后两个数交换顺序
a[i - 1] = a[i];
a[i] = temp;
}
}
left++;//准备进入从前往后的循环
}
foreach (var item in a)
{
Console.WriteLine(item);
}
网友评论