关于我个人对排序的理解

小编本人呢,目前只学了冒泡排序和堆排序。

不过,结合我这些天刷的题,我认为我可以发表一些关于我对排序的理解。

众所周知,排序也是算法的内容。

那么,算法的目的是为了啥呢?答案只有一个,提高效率。

咱们步入正题,接下来讲讲我们是如何通过不同的排序算法来提高我们的效率的。

先说最简单的冒泡排序,如果有不了解的可以看看下面图片里面的内容。

依我目前的眼界来看,冒泡排序就是效率最低的一个算法。这里我们创建一个元素个数为n的数组,那冒泡排序就是拿着第一个元素和其他所有元素比较,然后存储在符合我们要求的位置,但是我们每一个元素都要重复这种纷杂的操作,这让我们的效率大打折扣(冒泡排序的时间复杂度为O(N^2)),所以我们是不是就能想一些别的办法,去掉这些繁琐的操作,这里我就开始引入堆排序,不了解的同学可以看看下面图片中的内容

下面开始发表我个人的见解,我们排序就是去遍历数据,再进行数据间的比较,最后得出一个有序的数据,那么我们提高排序效率就只需要让遍历数据的次数尽可能去减少,以我目前的所学的知识,我认为提高排序效率的方法就是分区,下面来看图理解。

我们可以取一个中间介质,把比他小的放左边,比他大的放右边,那么我们再去进行排序的时候,是不是就不需要遍历每一个数据了?当然还有其它的方法,只要我们能够将这些数据进行有规律的分区,那么我们就可以大大提高排序的效率。

以大堆为例,下面我们来画图理解

我们现在要往一个大堆中插入一个为数值为60的数据,之后我们要进行的就是向上排序,这里分区的优点就体现出来了,我们不需要遍历52,44,22,33这4个数据,我们只需要和52比较即可。如果它比52大就替换位置,反之则否,最后就会形成一个相对有序的数组,当然它并不是完全有序的,还需要进行下一步操作,这里小编就不过多赘述了,之后我可能会出一期关于堆排序的文章,供大家阅读。

接着咱们之前的话题,我们堆排序充分利用了分区的优点,这使得我们排序的效率大大提高,其实我们只要能找出好的分区方法,那么我们同样也能写出专属于自己的“独家排序算法”。

这期的总结就是提高排序效率要学会分区,将无序的数据变为相对有序,再进行细分,最后得到我们想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值