首页 > 编程知识 正文

希尔排序的稳定性,堆排序时间复杂度最坏

时间:2023-05-04 01:39:21 阅读:20687 作者:4470

//联系方式:石虎QQ:1224614774昵称:布恩

QQ群:807236138群称为:iOS技术交流学习群排名图:

另一方面,每次插入排序时,将待排序的数据逐个与前面排序序列中的数字进行比较,找到自己的合适位置,然后插入到序列中,直到插入了所有数据。

二、水蛭排序首先将排列的元素的整个数组划分为几个子数组(由某个“增量”分隔的元素组成)分别直接进行插入排序,然后依次减少增量进行排序。 当整个数组中的元素基本有序(增量足够小)时,将整个元素重新直接插入排序。 由于希尔排序直接插入稍远的数据进行排序,因此在图像上希尔排序可以称为“跳转插入”

三、泡沫排序是通过交换使相邻的两个数成为小数,使前面的数在后面,每次扫描最大的数“下沉”在最后。 重复n次会使排列有序。

改进的气泡排序1 :如果在某个遍历中没有数据交换,则表示整个数组很有序。 因此,通过设置标记位来记录本次的遍历的数据交换的有无,能够判断是否继续循环。

改进的气泡排序2 :记录在某个导线测量中最后发生数据交换的位置。 这个位置以后的数据明显变得有序了。 因此,通过记录最后发生数据交换的位置,能够决定下一次循环的范围。

四、快速序列化《挖坑分期治理法》,首先i=L; j=R; 挖出a[i]形成第一个孔,a[i]称为基准数。 然后j--从后向前找比基准数小的数,找到后挖这个数埋在前孔a[i]中,再I从前向后找比基准数大的数,找到后挖这个数埋在前孔a[j]中。

重复该“挖洞填充数”直到i==j。 将基准数填写在a[i]中,I前面的数小于基准数,I后面的数大于基准数。 因此,将数组分为两部分,分别重复上述步骤即可完成排序。

五.选择排序数组分为有序区域和无序区域,首先整个数组为无序区域,然后每次从无序区域中选择最小元素直接放在有序区域的末尾,直到整个数组变为有序区域。

六.堆放顺序

图:

堆插入是指每次插入——时将新数据放在数组的末尾,但由于从该新数据的父节点到根节点一定是规则的数列,所以在该规则的数列中插入新数据即可。

删除堆是删除——堆,即为根节点分配最后一个数据值,然后再从根节点进行一次自上而下的调整。 调整时,首先查找左右子节点中最小的,如果父节点小于这个最小的子节点,则表示不需要调整,相反与父节点交换后考虑后面的节点。 相当于从根节点使一个数据在有序的数列中“沉降”。 因此,堆的插入和删除非常类似于直接插入排序,不仅仅是在二叉树中进行插入过程。 所以,可以用“插入树中”来表达堆积

七、合并排序合并排序主要分为两个步骤。 分数列(divide )是将数列每次分成两部分,然后再分成只有两个要素的小数列。 “合并”(Merge )合并已经内部有序的两个子序列,直到所有数字都有序为止。 可以用递归实现。

八、基数排序(桶排序) )

对基数进行排序,第一步按数字的每一位分配给每个桶,在桶内部排序,再输出()串); 然后,根据10位桶,继续排序,连接。 所有数字都是有序的,直到所有位都被比较了。

谢谢你!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。