学习排序算法前必看的问题

前言

我深深的知道,在现代时间是多么的宝贵,一秒钟几百万上下、十秒钟看一个心灵鸡汤、一分钟能看个短视频、十分钟能打把王者荣耀,但是我要在学习排序前,好好谈谈排序。当然如果你真的一秒钟几百万上下,你也可以直接跳过去学习,几百万我也担不起这个责任。我当然也知道大家肯定都已经知道了排序,只是不知道怎么说,怎么去实现。如果真如我所说,你不妨来听听我的一些理解,指点一下我。

1、什么是排序?

排序就是将一组对象按照某种逻辑顺序重新排列的过程。[1]

简单来说就是将一组无序的对象,或者说按照某种逻辑来看是无序的一组对象,将其变成有序的。
我不妨来举个简单的例子:
无序的数组
image
有序的数组
image
从无序的数组变成有序的数组,按照元素大小从小到大的逻辑来排列

排序是不是简单的从大到小或者从小到大呢?
显然不是,我们生活中也有很多的例子:
image
我们可以看到百度搜索框中的提示明显右先后顺序,那么为什么“hello world什么意思英语”在提示的前面呢?
明显不能再比大小了,因为对象不再是数字而是字符串了。
那么不是比大小那是比什么?(0.0 你猜)

2、为什么要排序?

  1. 排序能让人清楚看了解某种逻辑下一组数据中元素与元素,元素与其他元素之间的关系。
    举个简单的例子
    image
    上面的无序数组中我问你第5个元素是不是最大的?
    你是不是要一个一个看一个一个比较?
    image
    但是再经过排序后你就能一眼得出答案。

  2. 许多其他的算法需要排序
    举一个很简单的例子
    二分法查找明显是需要一组数据经过排序后才能进行查找。

3、在编程中有哪些排序呢?

image

3.1、什么是内部排序和外部排序呢?

内部排序是指待排序列完全存放在内存中所进行的排序过程[2]
外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。[3]

内存在电脑和手机中都是基本的组件,程序运行时需要临时存放数据一般都时放到内存中去,所以在使用排序的时候一般是将数据放入内存中去,这个时候我们称这种排序为内部排序,但是我觉得称为完全内部排序会更通俗易懂点。但是由于内存造价昂贵,一般的手机和电脑中的内存都比较小(4G 8G 16G),所以在对一些比较大的文件的时候我们就需要外部的内存来存储数据(外部内存一般指固态硬盘,机械硬盘,或者手机的内存卡),当然如果你是土豪,有比较大的内存那就另当别论了。

4、总结

  1. 排序就是将一组对象按照某种逻辑顺序重新排列的过程
  2. 排序能让人清楚看了解某种逻辑下一组数据中元素与元素,元素与其他元素之间的关系。
  3. 许多其他的算法需要排序

参考资料

[1]算法第四版 152p
[2]百度百科 https://baike.baidu.com/item/内部排序/3115742?fr=aladdin
[3]百度百科 https://baike.baidu.com/item/外部排序/10595890?fr=aladdin

posted @ 2021-05-19 17:48  浩浩丶  阅读(138)  评论(0)    收藏  举报