鸡尾酒排序

image.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);
            }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容