排序算法

经典的排序算法
冒泡排序

static void Main(string[] args)
        {
            int tempNum = 0;
            int[] nums = { 1, 2, 3, 4, 5 };

            // 冒泡排序,两两比较,左边小于右边交换位置,否则不变(把最小的放在最后)
            //  21345;23145;23415;23451;  第一轮:第一个和第二个,第二个和第三个,第三个和第四个,第四个第五个
            //  32451;34251;34521;        第二轮:第一个和第二个,第二个和第三个,第三个和第四个
            //  43521;45321;              第三轮:第一个和第二个,第二个和第三个
            //  54321                     第四轮:第一个和第二个 
            // (共count-1轮,每轮都比上一轮少一次)

            for (int i = 0; i < nums.Length - 1; i++)//如上例,最后一轮不用比已经是正确的了
            {
                for (int j = 0; j < nums.Length - 1 - i; j++)// 每轮都从第一个数字开始
                {
                    if (nums[j] < nums[j + 1])
                    {
                        tempNum = nums[j];
                        nums[j] = nums[j + 1];
                        nums[j + 1] = tempNum;
                    }
                }
            }
            Console.ReadKey();
        }

选择排序

static void Main(string[] args)
        {
            int tempNum = 0;
            int[] nums = { 1, 2, 3, 4, 5 };
            
            // 选择排序,永远拿第一个依次和之后的每一个比较,左边小于右边交换位置,否则不变(把最大的甩在了最左边)
            //  21345;31245;41235;51234;  第一轮:第一个和第二个,第一个和第三个,第一个和第四个,第一个第五个
            //  52134;53124;54123;        第二轮:第二个和第三个,第二个和第四个,第二个和第五个
            //  54213;54312;              第三轮:第三个和第四个,第三个和第五个
            //  54321                     第四轮:第四个和第五个 
            // (共count-1轮,每轮都比上一轮少一次)

            for (int i = 0; i < nums.Length; i++)
            {
                for (int j = i + 1; j < nums.Length; j++)// 每轮开始的起始数字都会+1
                {
                    if (nums[i] < nums[j])
                    {
                        tempNum = nums[i];
                        nums[i] = nums[j];
                        nums[j] = tempNum;
                    }
                }
            }
            Console.ReadKey();
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值