冒泡排序

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

堆排序

  1. 将初始待排序关键字序列(R1,R2....Rn)构建成大顶堆,此堆为初始的无须区;
  2. 将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足R[1,2...n-1]<=R[n];
  3. 由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,......Rn-1)调整为新堆,然后再次将R[1]与无序区最后一个元素交换,得到新的无序区(R1,R2....Rn-2)和新的有序区(Rn-1,Rn)。不断重复此过程直到有序区的元素个数为n-1,则整个排序过程完成。

计数排序

  1. 遍历一遍整个数组,找出数组中最大数和最小数之间的差距 range,然后开辟一个大小为range的数组count并全部初始化为0;
  2. 再次遍历整个数组,把每个元素的值映射到count的下标index,每映射到一个index,就把count[index]加一;
  3. 根据统计结果count,把数写会原数组,某个值index要写count[index]遍到原数组,这样,原数组就有序了

转载于:https://www.cnblogs.com/65Seeker/p/10229152.html

【算法基础笔记】常用的排序算法的时间、空间复杂度,部分排序算法原理相关推荐

  1. 算法基础:常用的排序算法知识笔记

    1.算法外排序分类 2.冒泡排序 冒泡排序(Bubble Sort)属于交换排序,它的原理是:循环两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止. 实现算法: /** * 冒泡排序优化后的 ...

  2. JavaSE基础笔记——常用API、Lambda、常见算法

    日期与时间 时间日期是在任何一个程序系统里几乎都不可能忽略掉的数据量,而且大量的算法在底层都会使用到时间日期数据值作为算法的基本种子(随机数算法或加密算法都经常用到). 计算机里,时间日期的本质 作为 ...

  3. 【算法基础26】贪心下——哈夫曼树、排序不等式、绝对值不等式、推公式的思路与应用

    一.合并果子(哈夫曼树) 题目描述:给出n堆不同种类的果子,每堆果子的数量不同,每个果子的重量为1.每次只能合并相邻堆的果子,且花费的体力是果子的重量和.将所有果子合并成一堆,求最小的体力花费. 问题 ...

  4. 十大排序总结(js实现、稳定性、内外部排序区别、时间空间复杂度、冒泡、快速、直接选择、堆、直接插入、希尔、桶、基数、归并、计数排序)

    目录 排序相关概念 稳定性 内部排序 外部排序 十种排序算法特点总结 交换排序 冒泡排序(数组sort方法的原理) 图解 js实现 特点 快速排序 图解 js实现 特点 选择排序 直接选择排序 图解 ...

  5. 算法基础:常用的查找算法知识笔记

    1.查找表和查找效率的概念 查找表是指由同一类型的数据元素构成的集合.分为静态查找表和动态查找表. 1.1 静态查找表 1.查询某个特定元素是否在查找表的集合当中 2.查询某个特定元素的各种属性 1. ...

  6. 【算法基础】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  7. 力扣学习计划——数据结构与算法基础笔记

    数据结构 数组 题目:136. 只出现一次的数字 题目:169. 多数元素 题目:15. 三数之和(难点) 这个方法就是我们常说的「双指针」,当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元 ...

  8. 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)

    文章目录 基本堆排序 1.有20个数组,每个数组有500个元素,且是有序的,如何在20*500个数中找出排名前500的数 设有两个递增的序列a,b 长度都为n,求前k个最小的a[i]+b[j] 若要在 ...

  9. 基础笔记8(二)(容器-引用类型的排序)

    1.类库中比较对象的大小实现了comparable接口的compateTo(). 已经实现了的如:integer,date,String(比较是每个字符的unicode编码大小,字符一样比较长度) 2 ...

最新文章

  1. 程序员为什么会有职业瓶颈?
  2. 如何配置windows下的snmp服务
  3. Python异常及处理方法总结
  4. ZJOI2019游记
  5. python爬去百度搜索结果_python实现提取百度搜索结果的方法
  6. android tablerow 间隔,android-如何使TableRow从右到左
  7. sequelize 外键关联_mysql – Sequelize.js外键
  8. python定义_python __xx__的定义和用处
  9. 汽车车灯有必要改造成氙气大灯吗?
  10. android 知识点大全 面试
  11. 快递公司type字典
  12. Extended VINS-Mono: 大规模户外环境进行绝对和相对车辆定位的系统性方法(IROS2021)...
  13. 40个幼儿园小故事,每天讲一个给小朋友~(赶紧收藏)
  14. 【PyG】文档总结以及项目经验(持续更新
  15. Ubuntu编译OpenPose的一些坑(附可能涉及的码云地址)
  16. 创业者的诗,远方和功不唐捐
  17. Windows电脑如何控制安卓手机
  18. android怎样传图片到mysql中
  19. Ubuntu 向日葵被远控无法显示图形化界面的解决方案
  20. CA证书签发系统(web版)

热门文章

  1. js 二叉树图形_js数据结构和算法(三)二叉树
  2. android 动态广告图片,android – 如何在动态壁纸的设置屏幕中添加一个admob广告视图?...
  3. springsession分布式登录被覆盖_拉勾 分布式 学习小结
  4. python re模块详解_python 详解re模块
  5. “之”字形打印矩阵~
  6. python2和3语法区别_python2和3语法区别
  7. docker 容器之间通信_四、Docker 网络原理、分类及容器互联配置
  8. c语言基础练习题 字符串输入scanf/gets 字符串赋值、比大小
  9. python常用输入输出の方法
  10. 关联的两个字段度需要建立索引吗_索引那些事儿