static void Main(string[] args)
{
int[] nums = new int[20];
Random r = new Random();
Console.WriteLine("原始数据:");
for (int i = 0; i < nums.Length; i++)
{
nums = r.Next(100); Console.Write(nums + " ");
}
Console.WriteLine();
int temp=0;//交换用空间
int low = 0;//low负责更改正向冒泡的起点位置(也是反向冒泡的终点)
int high = nums.Length-1;//high负责反向冒泡的起点位置(也是正向冒泡的终点)、
bool isChanged = true;//记录是否发生了交换,如果没交换就为false,发生了交换设置为true,
//作为判断提前完成排序任务情况的标记,以便及时终止程序
//开始鸡尾酒排序
while (true)
{
isChanged = false;//恢复标志位
//先进行正向冒泡,大值到右边
for (int i = low; i < high; i++)
{
if (nums > nums[i + 1])
{
//nums大于nums[i+1],就交换位置,大的向后
temp = nums;
nums = nums[i + 1];
nums[i + 1] = temp;
isChanged = true;//发生交换就将标志置为true
}
}
//正向冒泡完成一轮,最后一个数据确定了,终点前移
high--;
if (isChanged == false)//判断是否进行了交换
{
break;//不交换了就跳出循环
}