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

每天一算法 -- (排序算法总结)

一、集中排序算法的比较

  1.一般情况下几乎不太使用冒泡排序,它过于简单了,以至于可以毫不费力的写出来。然而当数据量很小的时候,它会有些应用的价值。

  2.选择排序虽然把交换次数降到了最低,但比较的次数仍然很大,当数据量小的时候,并且交换数据相对于比较数据更加耗时的情况下,可以应用选择排序。

  3.单大多数情况下,假设当数据量比较小或者基本有序时,插入排序算法时三种简单排序算法中最好的选择。对于更大数据量的排序来说,快速排序通常是最快的方法。

  4.除了在速度方便比较排序算法外,还有一种对各种算法的衡量标准是算法需要的内存空间有多大。冒泡排序、选择排序、插入排序都可以“就地”完成排序,即除了初始的数组外,几乎不需要其他的内存空间,所有的排序算法都需要一个额外的变量来暂时存储交换时的数据项。

二、小结

  1.前面的三种算法都假定了数组作为数据存储结构。

  2.排序包括比较数组中数据项的关键字和移动相应的数据项(实际上,是数据项的引用),知道它们排好序为止。

  3.前面的三种算法的事件复杂度最坏都是O(n2)。不过,某些情况下某个算法可以比其他算法快很多。

  4.冒泡排序是效率最差的算法,但它对简单。

  5.插入排序算法是前面三种排序算法中应用最多的。

  6.如果具有相同关键字的数据项,经过排序它们的顺序保持不变,这样的排序就是稳定的。

  7.前面三种算法除了需要初始数组之外,都只需要一个临时变量。

相关文章:

  • 由int指令引发的中断(1301)
  • [NOI2005]月下柠檬树[计算几何(simpson)]
  • js-模块化requirejs
  • 海量数据处理:十道面试题与十个海量数据处理方法总结
  • 8Python全栈之路系列之MySQL触发器
  • 二、网络配置文件
  • shell并发处理mysql数据统计备份删除释放
  • HDU 1255 覆盖的面积(线段树+扫描线)
  • cocos2d-x lua 中使用protobuf并对http进行处理
  • SSH防暴力破解的解决方法
  • 第三篇:一个Spark推荐系统引擎的实现
  • 2017 计蒜之道 初赛 第一场 B.阿里天池的新任务
  • C# WebApi 返回JSON
  • 可执行文件的装载
  • 自己定义控件 播放GIF动画
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • httpie使用详解
  • JSONP原理
  • JS题目及答案整理
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python连接Oracle
  • 多线程事务回滚
  • 记录一下第一次使用npm
  • 精彩代码 vue.js
  • 面试总结JavaScript篇
  • 前端临床手札——文件上传
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 项目实战-Api的解决方案
  • 写代码的正确姿势
  • 再谈express与koa的对比
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​2020 年大前端技术趋势解读
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (C++17) std算法之执行策略 execution
  • (poj1.2.1)1970(筛选法模拟)
  • (第二周)效能测试
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)图像的%2线性拉伸
  • (算法二)滑动窗口
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 反射 Reflect
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net组件程序设计之线程、并发管理(一)
  • .stream().map与.stream().flatMap的使用
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @TableLogic注解说明,以及对增删改查的影响