当前位置: 首页 > news >正文

选择排序与冒泡排序

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

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

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

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

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

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

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

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

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

相关文章:

  • 补一篇,Update Rollup 12 终于发布了
  • SQL查询重复记录
  • 雅思_百度百科
  • 开源实时流处理系统小结
  • [转]Resetting and pausing target processor: FALSE 错误的解决
  • 领域驱动设计与模式实战文摘
  • onchange事件学习
  • Android 中的JUnit
  • [转]ORACLE10GR2,dbca时ora-27125错误解决方法
  • VirtualBox 下的 Ubuntu 虚拟机中使用 Android 真机做开发调试
  • cmake for protobuff
  • ubuntu安装tomcat6
  • ubuntu GUI界面复制文件没权限的解决方案
  • jdk 1.7 新特性
  • Requested Clipboard operation did not succeed的解决办法
  • 【译】JS基础算法脚本:字符串结尾
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angular4 模板式表单用法以及验证
  • Cumulo 的 ClojureScript 模块已经成型
  • httpie使用详解
  • PHP的类修饰符与访问修饰符
  • Vue小说阅读器(仿追书神器)
  • 讲清楚之javascript作用域
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用docker-compose进行多节点部署
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 怎么把视频里的音乐提取出来
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • $jQuery 重写Alert样式方法
  • (03)光刻——半导体电路的绘制
  • (1) caustics\
  • (HAL库版)freeRTOS移植STMF103
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm高校实验室 毕业设计 800008
  • (论文阅读11/100)Fast R-CNN
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)Dubbo快速入门、介绍、使用
  • (转)VC++中ondraw在什么时候调用的
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET Micro Framework初体验
  • /dev/sda2 is mounted; will not make a filesystem here!
  • /etc/skel 目录作用
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @Transactional 竟也能解决分布式事务?
  • []指针
  • [22]. 括号生成
  • [Apio2012]dispatching 左偏树
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [c++] C++多态(虚函数和虚继承)
  • [CISCN 2019华东南]Web11
  • [Codeforces1137D]Cooperative Game
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出
  • [JS] node.js 入门
  • [LeetCode]-Pascal's Triangle III 杨辉三角问题