zoukankan      html  css  js  c++  java
  • 选择排序与冒泡排序

     /// <summary>
            /// 选择排序
            /// </summary>
            /// <param name="arr"></param>
            static void Sort1(int[] arr)
            {
                int len = arr.Length;
                for (var i = 0; i < arr.Length; i++)
                {
                    int min = i;
                    for (var n = i + 1; n < arr.Length; n++)
                    {
                        if (arr[n] < arr[min])
                        {
                            min = n;
                        }
                    }
                    var temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
            }
            /// <summary>
            /// 冒泡排序
            /// </summary>
            /// <param name="arr"></param>
            static void Sort2(int[] arr)
            {
                int len = arr.Length;
                for (var i = 0; i < arr.Length; i++)
                {
                    for (var n = i + 1; n < arr.Length; n++)
                    {
                        if (arr[n] < arr[i])
                        {
                            var temp = arr[i];
                            arr[i] = arr[n];
                            arr[i] = temp;
                        }
                    }
    
                }
            }
            static void Main(string[] args)
            {
                var arr = new int[]{1,2,5,6,7,3,4,56,7,7};
                Sort1(arr);
                foreach (var i in arr)
                {
                    Console.WriteLine(i);
                }
                var arr2 = new int[] { 1, 2, 5, 6, 7, 3, 4, 56, 7, 7 };
                Sort1(arr2);
                foreach (var i in arr2)
                {
                    Console.WriteLine(i);
                }
                Console.ReadKey();
            }

    以下为这两种排序算法的对比:

    选择排序与冒泡排序比较的次数是一样的

    选择排序的交换次数要比冒泡排序的交换次数少

    以下为这两种算法的关键点:

    为了找出最小的元素而扫描一遍数组,并不能为下一遍扫描提供任何信息,

      这样就造成这种现象:一个有序的数组和一个无需的数组排序时间是一样的

    交换次数和数组的大小是线性的

      数组越大,以为着交换次数也越大

  • 相关阅读:
    Centos7永久修改hostname
    centos静态绑定IP地址
    Salesforce 报表开发
    Salesforce 测试类的实践
    Salesforce Aura开发 Component组件开发实践
    Salesforce Aura 开发 Hello World开发实践
    PHP设计模式之工厂模式
    PHP设计模式之单例模式
    PHP截取带有汉字的字符串,将汉字按两个字节计算
    window下安装Apache+PHP
  • 原文地址:https://www.cnblogs.com/liulun/p/2888912.html
Copyright © 2011-2022 走看看