鸡尾酒排序

image.png

鸡尾酒排序_第1张图片
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);
            }

你可能感兴趣的:(鸡尾酒排序)