专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

数据结构-排序

如何提高排序算法的效率

简单排序的冒泡排序和插入排序的效率都不够高,我们应该如何提高效率?

首先,我们先了解什么是逆序对?

对于下标i<j,如果A[i]>A[j],则称(i,j)是一对逆序对(inversion)

简单排序的冒泡排序和插入排序都是交换2个相邻的元素,不断重复这个操作使得整个序列有序的。而交换2个相邻元素正好消去1个逆序对!

这就意味着,如果我们要提高排序的效率,我们要满足以下条件

1、 每次消去不止1个逆序对
2、 每次交换相隔较远的2个元素

希尔排序

对给定的数组以间隔进行排序,即先以比较大的间隔对数组进行排序,然后逐渐缩小间隔,直达间隔为1。

65_1.png

更小间隔的排序不会破坏之前间隔排序的有效性

选择排序

将未排序部分的最小元换成有序部分的最后位置,直至没有未排序的部分。

寻找未排序部分的最小元,选择排序是从未排序部分的第一个元素一直扫描到最后一个元素。

显然这样的效率也是不够高的,要提高选择排序的效率,我们就要提高查找未排序部分最小值的效率。我们可以用最小堆整个数据结构达到这个目的。

归并排序

归并:将两个有序的序列归并为同一个有序序列。

我们将要排序的序列分为两个部分,每个部分也平均分成两部分,直到分成最小单元。分成的两个部分进行排序,在归并起来。最后形成的序列就是有序的。

文章永久链接:https://tech.souyunku.com/40742

未经允许不得转载:搜云库技术团队 » 数据结构-排序

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们