排序算法

Posted Nemo_XP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。

经典的排序算法
冒泡排序

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();
        }

以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度