各位朋友,现在我们即将要进入数据结构与算法(Java版)这一系列教程中的排序算法这一章节内容的学习中了,所以还请大家系好安全带,跟随我准备出发吧!
相信诸位应该都知道排序算法有很多种吧!就算没见过,你总该多多少少听说过那么一嘴吧!我就不信你在找工作面试时,没有碰到过一两道有关排序算法的面试题,要知道,目前很多公司都会给面试者出几道有关排序算法的笔试题,相信经常面试的人应该对此多有体会!
因此,排序算法对于我们来说,那就是一个必须要非常熟练掌握的重要知识点了。当然,不得不说的是,有些排序算法理解起来还是很困难的,并不是像你想象中的那样洒洒水就能搞明白的,所以,这里我想提醒诸位,排序算法这一章节中的内容并不是那么容易就能学会的,不过,只要你加倍努力,认真学习,我相信问题都不大,嘻嘻😂!
排序算法的基本介绍
首先,我先给大家对排序算法作一个基本的介绍。
排序也称排序算法(Sort Algorithm),指将一组数据,依照指定的顺序进行排列的一个过程。
从上可以看到,有些人将排序算法简称为排序,那也就不足奇怪了。其实,准确地来说,排序它是一种算法,并不能无脑地说它就是数据结构中的一种。
排序算法的分类
排序算法可以分为两大类,它们分别是:
-
内部排序;
-
外部排序。
关于排序算法的这两大分类,下面我给大家作一个简单的介绍。
内部排序
内部排序,听这个名字我想大家应该就知道它的意思了吧!何谓内部排序呢?内部排序就是指将需要处理的所有数据都加载到内部存储器(即内存)中进行排序。
说得再通俗一点就是,我们得先将需要处理的所有数据都加载到内存中,然后再在内存中完成排序。
外部排序
当数据量过大,比如要对10亿个数据进行排序,无法全部加载到内存中时,我们才需要借助外部存储(例如文件、磁盘等)来进行排序。
而这也就是说,我们可能会先加载一部分数据进行排序,排序完了过后呢,会再加载另外一部分数据进行排序,最后就是将结果进行合并了。
小结
那么,常见的排序算法有哪些呢?
常见排序算法如下图所示,是不是你只须看一眼就什么都了然了啊!
从上图中可以看到,这里我们会重点讲解内部排序,之所以要给大家重点讲解内部排序,是因为大家在找工作面试时,面试官着重考察你的就是内部排序。
当然,内部排序又分为下面几大类:
-
插入排序;
插入排序又可分为两类,如下:
- 直接插入排序;
- 希尔排序。
-
选择排序;
选择排序又可分为两类,如下:
- 简单选择排序;
- 堆排序。
-
交换排序;
交换排序又可分为两类,如下:
-
冒泡排序;
冒泡排序,想必大家最熟悉的就是它了,嘻嘻😂!
-
快速排序。
-
-
归并排序;
-
基数排序。
基数排序,又称“桶子法”,实际上它就是桶排序的一个扩展版(或者升级版),这里我不知道大家有没有听说过桶排序,如果没听说过的话,那也没什么关系,因为只要你学会了基数排序,那桶排序自然而然也就不在话下了。
然而,对于一般程序员来讲,所谓的常见排序算法可能在他眼里就下面三种:
- 直接插入排序;
- 简单选择排序;
- 冒泡排序。
以上三种排序算法也是很多培训机构或者学校要求大家伙掌握的,只不过随着时代的发展与社会的极致内卷,现在企业对咱们程序员的要求也TM被卷得越来越高了,自然就不仅仅是掌握以上三种排序算法就能完事的了,下面这八种排序算法咱们也都得掌握得非常熟练才行。
- 直接插入排序;
- 希尔排序;
- 简单选择排序;
- 堆排序;
- 冒泡排序;
- 快速排序;
- 归并排序;
- 基数排序。
温馨提示:以上这八种排序算法在我们这套系列教程里面,我都会给大家讲解到,而且讲解得会非常仔细,所以希望诸位认真学,争取努力熟练掌握它们。
以上便是我对排序算法基本介绍与分类的一个说明。