数据结构—排序算法的总结

分类

冒泡排序,时间复杂度O(n x n),空间复杂度O(1),稳定
简单选择排序,时间复杂度O(n x n),空间复杂度O(1),不稳定
希尔排序,时间复杂度O(n^1.3),空间复杂度O(1),不稳定
堆排序,时间复杂度O(nlogn),空间复杂度O(1),不稳定
快速排序,时间复杂度O(nlogn),空间复杂度O(logn),不稳定
归并排序,时间复杂度O(nlogn),空间复杂度O(n),稳定
基数排序,时间复杂度O(n+r),空间复杂度O(rd),稳定
桶排序,时间复杂度O(n x n),空间复杂度O(n+m),稳定
简单插入排序,时间复杂度O(n x n),空间复杂度O(1),稳定

应用场景:

1.基本排好序的数可以考虑使用冒泡排序,简单插入排序
2.对稳定性有要求的可以考虑使用归并排序,基数排序
3.对10^5数量级左右的数据可以考虑快速排序,c++封装的sort函数就是采用快速排序作为底层算法,排序数的数量不宜太多,否则会导致栈溢出
4.获取TopK和最大(小)值,可以考虑使用堆排序
4.一堆数中是否有重复数,重复数有哪些,以及重复数的个数等获取。

参考趣学数据结构!!!

如果存在什么问题,欢迎批评指正!谢谢!

数据结构---排序算法的总结相关推荐

  1. 【数据结构排序算法系列】数据结构八大排序算法

    排序算法在计算机应用中随处可见,如Windows操作系统的文件管理中会自动对用户创建的文件按照一定的规则排序(这个规则用户可以自定义,默认按照文件名排序)因此熟练掌握各种排序算法是非常重要的,本博客将 ...

  2. 数据结构-排序算法总结与感悟

    数据结构-排序算法总结 一,排序的基本概念 排序:有n个记录的序列{R1,R2,-,Rn},其相应关键字的序列是{K1,K2, -,Kn },相应的下标序列为1,2,-, n.通过排序,要求找出当前下 ...

  3. C++基础-介绍·数据结构·排序·算法

    C++基础-介绍·数据结构·排序·算法 特点 使用方向 RPC Data Struct 数据结构 栈 Stack 内存分配中的栈 队列 List 数组 Array 链表 LinkTable 树 Tre ...

  4. 数据结构-排序算法(c语言实现篇)

    数据结构-排序算法(c语言实现篇) 排序算法是非常常用的算法,从介绍排序的基本概念,到介绍各种排序算法的思想.实现方式以及效率分析.最后比较各种算法的优劣性和稳定性. 1 排序的概念及应用 1.1 排 ...

  5. 数据结构排序算法实验报告_数据结构与算法-堆排序

    堆排序 堆排序是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点,堆排序的时间复杂度为O(nlogn).( ...

  6. 选择排序稳定吗_最常见的四种数据结构排序算法你不知道?年末怎么跳槽涨薪...

    前言 在学习数据结构的时候必然接触过排序算法,而且在日常开发中相信排序算法用得也比较多.而排序算法众多,各个效率又不同,难以记住.小编今天会介绍一些常用排序算法的特点和实现,对比不同排序算法的效率. ...

  7. 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)

    我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...

  8. 数据结构——排序算法(含动态图片)

    目录 插入排序 交换排序 选择排序 归并排序 常用排序算法复杂度和稳定性总结 前言 排序是<数据结构>中最基本的学习内容.排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行 ...

  9. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

最新文章

  1. WCF 第八章 安全 基于证书的加密
  2. 生成jacoco报告_03实战Jacoco统计代码覆盖
  3. mysql可视化创建外键说明_关于使用可视化图形工具navicat for mysql来创建外键的步骤...
  4. leetcode(90)子集 2
  5. rocketmq 两个线程同时消费一个消息
  6. I.MX6 busybox set hosname and login with root
  7. android theme错误,关于android:您需要在此活动中使用Theme.AppCompat主题(或后代)。 更改为Theme.AppCompat会导致其他错误...
  8. Fisker大师用ZBrush制作兽人萨尔全过程
  9. 使用计算机网络时mad的作用,计算机网络基础试题库7
  10. 1507. 旅行计划
  11. SHINE与Phoenix合并,专注推进核聚变技术
  12. 如何安装2018matlab,MATLAB 2018a软件安装教程
  13. 算法——中国剩余定理
  14. 【我想对策划说的事】-- 入职dy一年后被邀请召开的扯淡分享会讲稿
  15. Python画水平和垂直线
  16. Single Scale Retinex 增强 matlab 实现
  17. ###《High-level event recognition in unconstrained videos》
  18. linux的基本指令--第三节
  19. Netty(3)之WebSocket协议开发时间服务器
  20. 凤凰OS卡在x86_64的解决办法

热门文章

  1. Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍
  2. 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列
  3. 看了这几幅图,感觉自己物理白学了!
  4. 这个女生躲在衣柜等男友回家,结果竟是......
  5. 女生会 P 的可不仅仅是丰胸和瘦腿......
  6. 致家长:疫情期间教育好自己的孩子,就是你最重要的事业!
  7. 苍天饶过谁?| 今日最佳
  8. 简约而不简单的 Django 新手图文教程
  9. python execute_command err_Python management.execute_from_command_line方法代碼示例
  10. java之static关键词的作用