数据结构与算法(Java版) | 排序算法的介绍与分类

各位朋友,现在我们即将要进入数据结构与算法(Java版)这一系列教程中的排序算法这一章节内容的学习中了,所以还请大家系好安全带,跟随我准备出发吧!

在这里插入图片描述

相信诸位应该都知道排序算法有很多种吧!就算没见过,你总该多多少少听说过那么一嘴吧!我就不信你在找工作面试时,没有碰到过一两道有关排序算法的面试题,要知道,目前很多公司都会给面试者出几道有关排序算法的笔试题,相信经常面试的人应该对此多有体会!

因此,排序算法对于我们来说,那就是一个必须要非常熟练掌握的重要知识点了。当然,不得不说的是,有些排序算法理解起来还是很困难的,并不是像你想象中的那样洒洒水就能搞明白的,所以,这里我想提醒诸位,排序算法这一章节中的内容并不是那么容易就能学会的,不过,只要你加倍努力,认真学习,我相信问题都不大,嘻嘻😂!

排序算法的基本介绍

首先,我先给大家对排序算法作一个基本的介绍。

排序也称排序算法(Sort Algorithm),指将一组数据,依照指定的顺序进行排列的一个过程。

从上可以看到,有些人将排序算法简称为排序,那也就不足奇怪了。其实,准确地来说,排序它是一种算法,并不能无脑地说它就是数据结构中的一种。

排序算法的分类

排序算法可以分为两大类,它们分别是:

  1. 内部排序

  2. 外部排序

关于排序算法的这两大分类,下面我给大家作一个简单的介绍。

内部排序

内部排序,听这个名字我想大家应该就知道它的意思了吧!何谓内部排序呢?内部排序就是指将需要处理的所有数据都加载到内部存储器(即内存)中进行排序。

说得再通俗一点就是,我们得先将需要处理的所有数据都加载到内存中,然后再在内存中完成排序。

外部排序

当数据量过大,比如要对10亿个数据进行排序,无法全部加载到内存中时,我们才需要借助外部存储来进行排序。

而这也就是说,我们可能会先加载一部分数据进行排序,排序完了过后呢,会再加载另外一部分数据进行排序,最后就是将结果进行合并了。

小结

那么,常见的排序算法有哪些呢?

常见排序算法如下图所示,是不是你只须看一眼就什么都了然了啊!

在这里插入图片描述

从上图中可以看到,这里我们会重点讲解内部排序,之所以要给大家重点讲解内部排序,是因为大家在找工作面试时,面试官着重考察你的就是内部排序。

当然,内部排序又分为下面几大类:

  • 插入排序;

    插入排序又可分为两类,如下:

    • 直接插入排序;
    • 希尔排序。
  • 选择排序;

    选择排序又可分为两类,如下:

    • 简单选择排序;
    • 堆排序。
  • 交换排序;

    交换排序又可分为两类,如下:

    • 冒泡排序;

      冒泡排序,想必大家最熟悉的就是它了,嘻嘻😂!

    • 快速排序。

  • 归并排序;

  • 基数排序。

    基数排序,又称“桶子法”,实际上它就是桶排序的一个扩展,这里我不知道大家有没有听说过桶排序,如果没听说过的话,那也没什么关系,因为只要你学会了基数排序,那桶排序自然而然也就不在话下了。

然而,对于一般程序员来讲,所谓的常见排序算法可能在他眼里就下面三种:

  • 直接插入排序;
  • 简单选择排序;
  • 冒泡排序。

以上三种排序算法也是很多培训机构或者学校要求大家伙掌握的,只不过随着时代的发展与社会的极致内卷,现在企业对咱们程序员的要求也TM被卷得越来越高了,自然就不仅仅是掌握以上三种排序算法就能完事的了,下面这八种排序算法咱们也都得掌握得非常熟练才行。

  • 直接插入排序;
  • 希尔排序;
  • 简单选择排序;
  • 堆排序;
  • 冒泡排序;
  • 快速排序;
  • 归并排序;
  • 基数排序。

温馨提示:以上这八种排序算法在我们这套系列教程里面,我都会给大家讲解到,而且讲解得会非常仔细,所以希望诸位认真学,争取努力熟练掌握它们。

以上便是我对排序算法基本介绍与分类的一个说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/181557.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

包装印刷行业万界星空科技云MES解决方案

印刷业的机械化程度在国内制造行业内算是比较高的,不算是劳动密集型企业。如书本的装订、包装的模切、烫金、糊盒等都已经有了全自动设备。印刷厂除了部分手工必须采用人工外,大部分都可以采用机器,也就意味着可以由少量工人生产出大量产品。…

核电堆芯组件动态特性试验研究

u 核电试验概述 反应堆是核电事业的核心组成部分之一,堆内构件、堆芯燃料组件等部件在冷却剂流动冲击下,会诱发剧烈振动,导致堆芯内试验件流道不稳定。为了保障反应堆的安全运行,根据国家核安全法规规定,有必要对受冷…

linux 查看当前目录下每个文件夹大小

要在 Linux 中查看当前目录下每个文件夹的大小,可以使用 du 命令(磁盘使用情况)结合其他一些选项。下面是几个常用的命令示例: 显示当前目录下每个文件夹的大小——只显示一层文件夹: du -h --max-depth1该命令会以人…

storm安装手册及笔记

图解Storm相关概念 图解storm的并发机制 安装Storm的步骤 1、安装一个zookeeper集群 2、上传storm的安装包,解压 3、修改配置文件storm.yaml #所使用的zookeeper集群主机 storm.zookeeper.servers: - "weekend05" - "weekend06"…

高性能网络编程 - 关于单台服务器并发TCP连接数理论值的讨论

文章目录 概述操作系统的限制因素文件句柄限制1. 进程限制2. 全局限制 端口号范围限制 概述 单台服务器可以支持的并发TCP连接数取决于多个因素,包括硬件性能、操作系统限制、网络带宽和应用程序设计。以下是一些影响并发TCP连接数的因素: 服务器硬件性…

力扣 141.环形链表和142.环形链表2

目录 1.环形链表Ⅰ解题思路2.环形链表Ⅰ代码实现3.环形链表Ⅱ解题思路4.环形链表Ⅱ代码实现 1.环形链表Ⅰ解题思路 利用快慢指针,快指针一次走两个,慢指针一次走一个,如果出现了快指针为空或者快指针的next为空的现象则说明不带环&#xff0…

【vue】封装树形下拉框组件 el-popover+el-tree+el-select

父组件使用 <template><div>{{ array }} 更多属性详见wgyTreeSelect组件<wgyTreeSelectv-model"array":list"list":multiple"true":disabled-ids"[111,113,2]"/></div> </template><script> /*…

基于 golang 从零到一实现时间轮算法 (二)

Go实现单机版时间轮 上一章介绍了时间轮的相关概念&#xff0c;接下来我们会使用 golang 标准库的定时器工具 time ticker 结合环状数组的设计思路&#xff0c;实现一个单机版的单级时间轮。 首先我们先运行一下下面的源码&#xff0c;看一下如何使用。 https://github.com/x…

2023辽宁省数学建模B题数据驱动的水下导航适配区分类预测完整原创论文分享(python求解)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了辽宁省数学建模B题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B用Python&#xff0b;SPSSPRO求解&…

Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码

文章目录 一、问题描述&#xff1a;二、产生原因三、解决方法 一、问题描述&#xff1a; 项目在idea中运行时日志是正常的&#xff0c;用Tomcat启动时发现一大堆看不懂的文字&#xff0c;如 二、产生原因 产生乱码的根本原因就是编码和解码不一致&#xff0c;举个例子就是翻…

Adobe:受益于人工智能,必被人工智能反噬

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;Adobe(ADBE)受益于生成式人工智能的兴起&#xff0c;其一直能实现两位数的收入增长就证明了这一点。 &#xff08;2&#xff09;在生成式人工智能兴起时&#xff0c;该公司就快…

STM32-高级定时器

以STM32F407为例。 高级定时器 高级定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车&#xff08;断路&#xff09;功能&#xff0c;这些功能都是针对工业电机控制方面。 功能框图 16位向上、向下、向上/向下自动重装载计数器。 16位可编程预分频器&#xff0c…

小程序https证书

小程序通常需要与服务器进行数据交换&#xff0c;包括用户登录信息、个人资料、支付信息等敏感数据。如果不使用HTTPS&#xff0c;这些数据将以明文的方式在网络上传输&#xff0c;容易被恶意攻击者截获和窃取。HTTPS通过数据加密来解决这个问题&#xff0c;确保数据在传输过程…

Jenkins中解决下载maven包巨慢的问题

背景介绍 我们在使用jenkins构建maven项目时由于依赖很多第三方jar包&#xff0c;默认会从maven中央仓库下载&#xff0c;由于maven中央仓库服务器是国外的&#xff0c;所以下载很慢&#xff0c;甚至会超时 解决办法 增加jenkins maven 源配置 如下图所示&#xff0c;增加m…

默认路由配置

默认路由&#xff1a; 在末节路由器上使用。&#xff08;末节路由器是前往其他网络只有一条路可以走的路由器&#xff09; 默认路由被称为最后的关卡&#xff0c;也就是静态路由不可用并且动态路由也不可用&#xff0c;最后就会选择默认路由。有时在末节路由器上写静态路由时…

[直播自学]-[汇川easy320]搞起来(1)给PLC供电

从没正儿八经的用一用PLC&#xff0c;所以双11在淘宝入手一个EASY320&#xff0c;大概1000出头。 到货后&#xff0c;汇川官网搜了一下资料&#xff0c;搜到这几个&#xff1a; 首先是给PLC供电吧&#xff0c;看了下PLC前面是24V&#xff0c;不知道供电范围多宽&#xff0c;于…

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法&#xff1a; 报/usr/bin/ld: cannot find -lc 我们下载glibc-static&#xff1a; 选择x86_64的。 还有一个是libxcrypt-static&#xff0c;依旧在这个网站里搜。 rpm -ivh glibc-static-2.28-239.el8.x…

基于SSM的模具制造企业订单跟踪管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

如何在知识付费系统小程序开发中实现社区互动和用户参与

在知识付费系统小程序的开发中&#xff0c;实现社区互动和用户参与可以通过以下步骤实现&#xff1a; 1. 建立用户身份验证和管理系统 // 后端示例代码&#xff08;Node.js&#xff09; // 用户注册 app.post(/register, (req, res) > {const { username, email, passwor…

重新思考边缘负载均衡

本文介绍了Netflix在基于轮询的负载均衡的基础上&#xff0c;集成了包括服务器使用率在内的多因素指标&#xff0c;并对冷启动服务器进行了特殊处理&#xff0c;从而优化了负载均衡逻辑&#xff0c;提升了整体业务性能。原文: Rethinking Netflix’s Edge Load Balancing[1] 我…