zoukankan      html  css  js  c++  java
  • 数组排序-选择排序法

    看了其他博主的文章,觉得这个排序算法很不错,就摘录过来,记录一下,具体算法如下:

      //选择排序法
        private static void chooseSort(int[] array)
        {
            //第一个for循环:每一次循环完成后得到的当前的最大元素都与第i位做交换
            for (int i = 0; i < array.Length; i++)
            {
                //min为最小元素的索引
                int min = i;
    
                //第二个for循环:将当前的array[j]与array[min]作比较,如果array[j]更小,则替换min的当前索引
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[min] > array[j])
                    {
                        min = j;
                    }
                }
                //当第二个for循环完成时,array[min]中存储的就是当前最小元素
                //将array[min]与array[i]交换
                int temp = array[i];
                array[i] = array[min];
                array[min] = temp;
            }
        }

               选择排序法特点

      • 执行的比较和交换次数
        比较: N*(N-1)/2
        交换: N

      • 运行时间与输入无关
        在每一次的for循环结束后并不能为下一次的循环提供有效信息。这种性质在某些时候是一种缺陷。在数组大小相同时,当一个几乎已经有序的数组使用选择排序法花费的时间和无序数组所花费的时间是一致的。

      • 数据的移动量最少
        交换的次数和数组的大小呈线性关系,其他的排序算法对数据移动量都是线性对数级别或平方级别的。

  • 相关阅读:
    jekyll简单使用
    三、ansible简要使用
    四、ansible主机组定义
    项目中远程连接404 NOT FOUND问题的原因以及解决办法(这里只涉及我遇到的问题)
    AS3中的位操作
    AS3中is和as操作符的区别
    static 函数和普通函数的区别
    [译] SystemTap
    2017-09-17 python 学习笔记
    xargs 命令使用小记
  • 原文地址:https://www.cnblogs.com/BraveBoy/p/13785754.html
Copyright © 2011-2022 走看看