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

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

在这里插入图片描述

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

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

排序算法的基本介绍

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

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

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

排序算法的分类

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

  1. 内部排序

  2. 外部排序

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

内部排序

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

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

外部排序

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

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

小结

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

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

在这里插入图片描述

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

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

  • 插入排序;

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

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

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

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

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

    • 冒泡排序;

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

    • 快速排序。

  • 归并排序;

  • 基数排序。

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iPortal如何灵活设置用户名及密码的安全规则

作者&#xff1a;yx 目录 前言 一、配置文件介绍 1、<passwordRules>节点 注意事项&#xff1a; 2、<usernameRules>节点 二、应用实例 1、配置文件设置 2、验证扩展结果 三、结果展示 前言 SuperMap iPortal提供了扩展账户信息合规度校验规则的能力&#…

太坑了,降低 代码可读性的 12 个技巧

工作六七年以来&#xff0c;接手过无数个烂摊子&#xff0c;屎山雕花、开关编程已经成为常态。 下面细数一下 降低代码可读性&#xff0c;增加维护难度的 12 个编码“技巧”。 假设一个叫”二狗“ 的程序员&#xff0c;喜欢做以下事情。 1. 二狗积极拆分微服务&#xff0c;一个…

二.831(KMP)字符串详解

ne[3]枚举2次 ne[4],枚举3次 ne[5],枚举4次]b在后面了,就一个b就不可能在前面了]b舍弃 ne[6],枚举i-1次]一眼看最长相等前后缀,就是aab,aab ne[7],aaba,aaba ne[8],枚举i-1次]aabaa,aabaa 同理 怎么快速看呢!我想把b给夹起来]把中间夹的数越多就多 其实 加的有规律,最…

多级缓存之JVM进程缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0…

【基础IO⑨】:重定向实现原理 “Linux下一切皆文件“

【基础IO⑨】&#xff1a;重定向原理 与 "Linux下一切皆文件" 一.重定向1.实现原理2.输出重定向3.输入重定向4.补充&#xff1a;简易shell中实现重定向 二."Linux下一切皆文件"1.虚拟文件系统(VFS) 一.重定向 我们首先关闭2号文件描述符&#xff0c;然后再…

antv/x6 自定义html节点并且支持动态更新节点内容

antv/x6 自定义html节点 效果图定义一个连接桩公共方法注册图形节点创建html节点动态更新节点内容 效果图 定义一个连接桩公共方法 const ports {groups: {top: {position: top,attrs: {circle: {r: 4,magnet: true,stroke: #cf1322,strokeWidth: 1,fill: #fff,style: {visib…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…

监控actuator配置以及踩坑记录

以前这个监控都是领导去加&#xff0c;我顶多去修改一些时间参数&#xff0c;让我自己加还是头一次 正经踩了不少坑啊 1.依赖引入 先说配置过程 不对 先说我们项目结构 我们有一个common项目&#xff0c;作为一个公共项目。各种项目公用的依赖&#xff0c;都配置在common中…

深度学习中的数据类型介绍:FP32, FP16, TF32, BF16, Int16, Int8 ...

文章目录 0. 前言1. 数据的存储方式2. 不同数据类型介绍2.1 深度学习中常用的数据类型2.2 BF16 类型的优势2.3 不同数据类型的使用场景 0. 前言 相比于 CPU&#xff0c;GPU 在架构设计时将更多的晶体管用于数据处理&#xff0c;而不是数据缓存和流量控制&#xff0c;因此可以高…

关于网站安全的一些讨论

互联网的普及和发展为企业和个人提供了巨大的机会&#xff0c;但同时也伴随着网络安全威胁的增加。网站被攻击是一个常见的问题&#xff0c;可能导致数据泄露、服务中断和声誉受损。在本文中&#xff0c;我们将探讨与网络安全紧密相关的因素&#xff0c;分析为什么网站容易受到…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点&#xff1a; 1. 硬件设施&#xff1a;包括服务器、存储设备、网络设备等&#xff0c;这是整个系统运行的物理基础。 2. 软件设施&#xff1a;包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等&#xff0c;这些是…

SSM之Spring注解式缓存Redis以及redies中的击穿,雪崩,穿的三种现象

⭐⭐ Redis专栏&#xff1a;Redis专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.SSM整合Redis 1.2配制Spring-redis.xml文件 1.3 applicationContext.xml 1.4 配置redis的key生成策略 二.redis的注解式开发 2.1 redis的注解式是什么及其好处 2.2 redi…

Spring IoCDI入门

一&#xff1a;Spring IoC&DI概念 (1)Spring概念 &#x1f497;Spring是包含了众多工具方法的IoC容器&#xff0c;是一个开源框架&#xff0c;让我们的开发更加简单 &#x1f31f;Spring的两大核心和特点&#xff1a;IoC和AOP (2)IoC的介绍 1.概念 &#x1f497;IoC: Inv…

EOCR-3E420,3EZ,3DE电机保护器与变频器配合使用的方法

上海韩施电气自动化设备有限公司提供 在工业现场中&#xff0c;电动机的起动与运行很多时候需要变频器参与其中&#xff0c;以达到降低电机维护成本、增加电机寿命的目的。采用变频器运转时&#xff0c;随着电机的加速相应提高频率和电压&#xff0c;起动电流被限制在 150%额定…

Android Studio 常见问题

一、Android Studio 创建项目后Gradle(构建)项目很慢问题解决 在使用Android Studio创建项目时&#xff0c;会自动从网上下载相关依赖。由于是访问国外服务器&#xff0c;会出现构建项目时下载依赖很慢的问题。为了解决该问题&#xff0c;需要在settings.gradle(或者settings.…

YOLOv8优化:block系列篇 | Neck系列篇 |可重参化EfficientRepBiPAN优化Neck

🚀🚀🚀本文改进: 可重参化EfficientRepBiPAN优化Neck 如何在YOLOv8下使用:1)结合neck; 🚀🚀🚀EfficientRepBiPAN在各个领域都有ying 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.原理…

Linux 学习(CentOS 7)

CentOS 7 学习 Linux系统内核作者: Linux内核版本 内核(kernel)是系统的心脏&#xff0c;是运行程序和管理像磁盘和打印机等硬件设备的核心程序&#xff0c;它提供了一个在裸设备与应用程序间的抽象层。 Linux内核版本又分为稳定版和开发版&#xff0c;两种版本是相互关联&am…

EPLAN-P8软件技术分享文章

EPLAN公司成立于1984年德国。EPLAN最初的产品是基于DOS平台&#xff0c;然后经历了Windows3.1、Windows95、Windows98、Windows2000、Windows Vista等、Windows7、Windows8等平台发展历史。EPLAN是以电气设计为基础的跨专业的设计平台&#xff0c;包括电气设计、流体设计、仪表…

ubuntu20.04 安装cudnn

中文地址是.cn&#xff1a;cuDNN 历史版本 | NVIDIA 开发者 英文地址是.com&#xff1a;cuDNN 历史版本 | NVIDIA 开发者 1、下载cudnn&#xff1a;cudnn-local-repo-ubuntu2004-8.8.1.3_1.0-1_amd64.deb 解压并安装&#xff1a;sudo dpkg -i cudnn-local-repo-ubuntu2004-8.8…

【JMeter】定时器分类以及场景介绍

1. 定时器分类 固定定时器 作用&#xff1a;请求之间设置等待时间应用场景&#xff1a;查询商品列表后&#xff0c;去查看列表商品详情页。针对商品列表数据量比较大的&#xff0c;响应时间会比较长&#xff0c;就需要设置等待时间然后去查看商详 2.定时器的作用域&#xff1…