C# 初学算法排序-冒泡排序,选择排序

前言

最近想学习一下算法的处理,从网上搜索了一下例子进行了总结说明
初学 开始不会接触太难的算法 先从最简单的算法开始学起
这次主要讲的就是 冒泡算法 ,和选择算法。 直接贴代码

代码示例


        /// <summary>
        /// 冒泡排序  算法处理
        /// 思想:从数组第一位开始,每个元素和它下一位比较,将大的换到后面,即每一轮循环之后可以确定一个位置
        /// </summary>
        /// <param name="array">针对需要处理的数据信息进行处理</param>
        /// <returns>返回数组集合信息</returns>
        public static int[] Bubbling(int[] array) 
        {
            #region   冒泡排序  
            ArrayList mewArray = new ArrayList();
            //定义一个状态信息进行  区分  判断这个数组的排序是否完成
            bool isKeep = false;
            //遍历数组中的所有元素信息
            for (int i = 0; i < array.Length; i++)
            {
                //这一层循环是  从数组的第一个元素开始进行循环处理   但是总长度是比原数组长度少一个  好进行比较
                for (int j = 0; j < array.Length - i - 1; j++)
                {
                    #region   这一层开始做逻辑判断信息进行处理
                    //如果第一个数  大于第二个数   进行替换处理   大数往后移
                    if (array[j] > array[j + 1])
                    {
                        int b = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = b;
                        //状态进行了替换
                        isKeep = true;
                    }
                    #endregion
                }
                if (!isKeep) break;
            }
            return array;
            #endregion
        }

        /// <summary>
        /// 选择排序
        /// </summary>
        /// <param name="array">针对需要处理的数据信息进行处理</param>
        /// <returns>返回处理好的数组集合信息</returns>
        public static int[] XuanZe(int[] array)
        {
            #region  选择排序
            //遍历数组中的所有元素信息
            for (int i = 0; i < array.Length; i++)
            {
                //初始化  默认第一个是最小的
                int min = i;
                //判断获取最小值的下标信息   从第二个开始进行比较
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[min] > array[j])
                    {
                        min = j;
                    }
                }
                //判断表示当前值不是最小值信息
                if (min != i)
                {
                    //进行操作替换   保证每次循环的这个信息是最小值  达到效果   多少个元素  循环多少次进行处理
                    int b = array[i];
                    array[i] = array[min];
                    array[min] = b;
                }
            }
            return array;
            #endregion
        }


说明

我这边是那数字数组做比较处理的 这样做的原因是方便理解,以及掌握
示例{6,5,4,3,2,1}
经过排序后的结果都是{1,2,3,4,5,6}
经过测试 代码是没有问题的 算法还OK
继续努力学习中
从网上找到一个图片 可以形象的说明冒泡排序

图片来源:https://blog.csdn.net/ChinarCSDN/article/details/101800516

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值