还记得大一上学期学习C语言数组的元素排序时,在现场叫了八个同学在讲台上排成一排(不用想,博主当时就在那排人中,hhh),然后通过第一位同学与第二位同学比较,高的在后面,再依次类推,第二位同学与第三位同学比较......这样比下去最后一位就是最高的啦,最后一位同学的前面同学再依次循环下去,这样就可以实现身高从低到高的排序啦。其实这是冒泡排序的原理(博主后来才知道)。排序一直都是很常见的问题,在c++,java,python编程语言中都有相应的正序和逆序方法(其实实质都是C语言写的),调用起来非常方便。但C语言就没那么友好呢,谁叫它是一门最底层语言呢。C语言要实现这些排序就要有个排序的函数。这也是数据结构与算法这课程的最后一部分。我想很多人都会这样想:我以后又不使用C语言做产品设计,就不用学这些复杂的东西,用别的编程语言一调用不就好了吗。其实博主一开始也是这么想的。但换个角度想,我们计算机类专业的同学都知道计算机四大件,这些计算机基础知识算是程序员的内功,这很大程度会决定你以后能到达的高度。所以学还是有必要学好的。好啦,啰里啰唆讲了那么多,现在我们正式来看看一下这算法里的常见几种排序吧(本篇文章只写四种,后四种下篇文章再来)。
第一种:冒泡排序(非常简单的,也是最常见用的)
直接上图片:

第二种:快速排序(小白比较难理解):
核心思路:
a. 先从数列中取出一个数作为基准数。
b. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
c. 再对左右区间重复第二步,直到各区间只有一个数。
上图片:
第三种:插入排序(也是相对比较难理解的):

第四种排序:希尔排序(博主也不知道为啥叫希尔),理解难度一般般

好啦 ,今天的分享就到这了,后面这几种排序相对来说会难理解一点,这需要大家慢慢地去悟(博主现在都还没完全悟透这些)。文章最后,如果大家对与算法总是理解不了的话,博主在此推荐一个理解算法神器(拿走不谢),是个国外网址,博主经常用来理解一些繁琐无味的算法。
网站:数据结构和算法动态可视化 (Chinese) - VisuAlgo
本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.
4367

被折叠的 条评论
为什么被折叠?



