python实现单链表快速排序升序linkedqueue_GitHub - Bean-jun/Base_Algorithm: 基本数据结构(队列、堆、栈、链表、树、图)和部分其他算法,使用通熟易懂的大...

冒泡冒泡,是将石头丢下去,才会有个泡泡冒起来,顾名思义,我们创建一个for循环,从后往前遍历,这样就实现了每次遍历都会剔除掉最后一个元素的操作,这恰好是我们所需要的(因为冒泡排序的内循环就是将最大元素移动到最后的位置)

在内循环中,我们从头开始遍历,每一次都会比较当前点和下一个点比较,满足条件就交换,一直循环下去,这样就会在一轮循环中将一个最大的元素移动到最后,此时我们执行外循环,进行新一轮的大元素的后移操作。

选着排序中假设for循环为游标移动,就相当于两个快慢性格的人,慢游标移动一格,快游标则是在当前漫游标的位置开始向右移动,一直到末尾;此时漫游标再右移动一格,快游标再次重复上述操作。

在快游标移动过程中,它需要做比较操作,若是比漫游标位置处的 元素要小,则记录一下,然后再右移,若是再遇到一个元素比在途中遇到的还小,则重新记录一下,最终快游标一一循环走完,跳出循环时,需要做一下小小的判断,若是记录的最小元素的索引比初始的要小,则交换一下位置,否则不做操作。

相当于创建两个游标,第一个游标一直向前走,不回头的那种,而第二个游标则是获取第一个游标的位置之后往回走。

当第一个游标向右移动一格,此时我们就开始将当前游标下的元素和前一个元素比较,在相应条件(小于或者大于)下进行交换操作,一直到第二个游标完全逆向遍历完,跳出循环,此时第一个游标向右再走一格,然后第二个游标往回走...

这里说一个小技巧,就是第二个游标在往回遍历时,若是已经遍历到超出我们设置的条件时,可以做break操作,原因是之前的数其实就是升序或者降序,效果就是可以节省时间。

从数列中挑选一个元素,我们称之为“基准”(这里我们选择最后一个元素),然后创建两个游标,分别在数列头部和数列尾部-1的位置,前游标向后移动(保证游标大小不可以大于后游标),遇到的元素大于尾部元素,则暂停!此时后游标向前移动(保证游标大小不可以小于前游标),遇到的元素小于尾部元素则暂停,然后交换两个游标指向的元素;然后再去处理游标的移动,若是前游标小于后游标,这继续移动,一直到两个游标重合,此时和最后的元素相比较,然后交换。此时就会实现一个数列的分割,变为左右两个部分,使用递归的方法对余下部分进行处理即可。

可以简单理解为插入排序的变种,是将整个有序序列分割成若干小的子序列分别进行插入排序。

归并排序是将原数列分成若干个小份,对每小份进行排序,然后合并的过程。

利用最小堆(最大堆)的原理实现排序,具体可以参考数据结构部分中有关最小堆(最大堆)的介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值