博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
鸡尾酒排序算法
阅读量:5323 次
发布时间:2019-06-14

本文共 1542 字,大约阅读时间需要 5 分钟。

        static int[] intArray;//定义要排序的数组

        #region 两个数互换位置
        /// <summary>
        /// 两个数互换位置
        /// </summary>
        /// <param name="left">第一个数</param>
        /// <param name="right">第二个数</param>
        static void Change(ref int left, ref int right)
        {
            int temp;//临时变量
            temp = left;//记录第一个数的值
            left = right;//使第一个数的值等于第二个数的值
            right = temp;//使第二个数的值等于临时变量记录的值
        }
        #endregion
        #region 鸡尾酒排序算法
        /// <summary>
        /// 鸡尾酒排序算法
        /// </summary>
        /// <param name="intArray">要排序的数组</param>
        static void CockSorts(int[] intArray)
        {
            int low, up, index;//定义变量
            low = 0;//数组的开始索引
            up = intArray.Length - 1;//数组的结束索引
            index = low;//临时变量
            while (up > low)//判断数组中是否有多个元素
            {
                for (int i = low; i < up; i++)//从上向下扫描
                {
                    if (intArray[i] > intArray[i + 1])//比较前后两个数的大小
                    {
                        Change(ref intArray[i], ref intArray[i + 1]);//变换两个数的位置
                        index = i;//记录当前索引
                    }
                }
                up = index;//记录最后一个交换的位置
                for (int i = up; i > low; i--)//从最后一个交换位置处从下向上扫描
                {
                    if (intArray[i] < intArray[i - 1])//比较前后两个数的大小
                    {
                        Change(ref intArray[i], ref intArray[i - 1]);//变换两个数的位置
                        index = i;//记录当前索引
                    }
                }
                low = index;//记录最后一个交换的位置
            }
        }
        #endregion
        #region 对指定数组使用鸡尾酒排序算法进行排序
        /// <summary>
        /// 对指定数组使用鸡尾酒排序算法进行排序
        /// </summary>
        /// <param name="intArr">要排序的一维数组</param>
        static void Sort(int[] intArr)
        {
            intArray = intArr;//为数组赋值
            CockSorts(intArray);//使用鸡尾酒算法进行排序
        }
        #endregion
        static void Main(string[] args)
        {
            int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 };//定义一个一维数组,并赋值
            Sort(arr);//排序
            for (int i = 0; i < arr.Length; i++)//循环遍历排序后的数组
            {
                Console.Write(arr[i] + " ");//逐个输出数组元素
            }
            Console.ReadLine();
        }

转载于:https://www.cnblogs.com/wuhuisheng/archive/2012/08/20/2647346.html

你可能感兴趣的文章
bzoj2257
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
查看oracle数据库的连接数以及用户
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spring面试题
查看>>
C语言栈的实现
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
【转】redo与undo
查看>>
安卓当中的线程和每秒刷一次
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>