• 选择排序


     (一)什么是选择排序

       它的工作原理是每一次从待排序的数据中选出最大(小)的一个元素,存放在序列的起始位置,然后再从剩余未排序中继续寻找最大(小)小)元素,然后再从剩余从排序元素中继续寻找最大(小)元素,放到的已排序序列的末尾。以此类推,直到全部待排序元素派完。

      如果已经了解了选择排序,那么可以直接进入到总结篇:https://www.cnblogs.com/gdouzz/p/10759399.html

        (二)代码实现

         static int[] SelectionSort(int [] arr)
            {
                for(var i = 0; i < arr.Length; i++)
                {
                    var tempValue = arr[i];
                    for(var k = i; k < arr.Length; k++)
                    {
                        if (tempValue < arr[k])
                        {
                            var temp = arr[k];
                            arr[k] = tempValue;
                            tempValue = temp;
                        }
                    }
                    arr[i] = tempValue;
                }
                return arr;
            }

     (三)时间复杂度分析

        //选择排序 //选择排序的主要优点与数据移动有关,如果某个元素在正确的位置,则它不会被移动。
        //选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对 {displaystyle n} n个元素的表进行排序总共进行至多
        //displaystyle n-1} {displaystyle n-1}次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
        //最坏情况下
        //逆序,5,4,3,2,1
        //第一趟,先找到最小的,比较4次,交换一次。
        //第二趟,1,4,3,2,5  比较3次,交换一次。
        //第三躺,1,2,3,4,5  比较2次, 交换一次。
        //第四趟,1,2,3,4,5  比较1次,交换一次。
        //最坏情况下,比较次数o(n²),交换次数n-1次
        //最好情况
        //本身是有序的:1,2,3,4,5,交换零次,比较次数还是o(n2)的平方。
        //这个特性导致了选择排序,几乎不会有人用了。

      看完这个时间复杂分析了,终于明白为啥工作那么久了,从来没有想着去用选择排序了。

      选择排序,这个算法不常用,基本不用,主要是用来扩展我们的思维的。

  • 相关阅读:
    java基础之final
    java基础之finally(转)
    java 中 == 与 equals 的区别
    转载:日志分析
    eclipse配置Git
    Gitlab使用笔记:新建工程
    hadoop,spark的启动及DataNode无法启动的解决方法
    HTTP Status 500
    springmvc4.0配置ajax请求json格式数据
    jq load()方法中加载文件中元素事件绑定失效的问题
  • 原文地址:https://www.cnblogs.com/gdouzz/p/10759239.html
Copyright © 2020-2023  润新知