数据结构中排序的基本概念及常用的一些方法

基本概念

排序是指将数据元素重新排列成一个按关键字有序的一个过程。通俗的来说就是给一堆数据进行编号,编号的规则则是由关键字来决定。
排序完全在内存中进行的就叫做内部排序,借助外存的叫做外部排序
相通的数据元素在不同排序过程中发生位置改变的叫做不稳定排序,反之就是稳定排序

常用方法

①直接插入排序

这种方法最简单,就是依次将记录序列中的每一个记录插入到有序的序段中。过程就是先把第一个记录放到这个序段中,然后拿出第二个记录与它之前的记录进行从后向前的比较,如果该记录小与之前的记录,则将之前的记录后移一位,直到找到比该记录小或者相等的记录,因为这个过程是先比较后移动,所以后面总是有一个空位让你放进去该记录,依次类推。

时间复杂度为 O(n²),是一种稳定排序。

②希尔排序

先把待排序的记录划分为若干子序列分别进行直接插入排序,当记录的排列已经基本有序时,最后再对所有记录进行一次直接插入排序。具体实现就是先取一个d1<n,d1作为间隔值,所有间隔值为d1倍数的记录为一组,然后进行直接插入排序,之后继续去d2,d3…,直到d=1。

是一种不稳定排序,时间复杂度有点麻烦,因为与序列增量有关。

③冒泡排序

对所有相邻记录的关键字比较,如果逆序,交换即可。具体就是用当前记录的关键字从前向后依次比较,直到找到比它大的数据元素项,然后放在这个数据元素项之前即可。

时间复杂度为 O(n²),是一种稳定排序。

④快速排序

把记录分割成两部分,其中一部分记录的关键字小于另一部分,之后分别在他们那部分进行排序,依次类推,直到每个分区都只有一个记录。

时间复杂度与实际情况有关,是不稳定排序。

⑤直接选择排序

在每一趟比较中选取关键字最小的记录作为该次比较的结果。具有方法就是从无序区(也就是待排序的那些数据元素)选择关键字值最小的记录,将它与无序区的第一个记录交换位置,直到无序区为空。

时间复杂度为 O(n²),是一种不稳定排序。

猜你喜欢

转载自blog.csdn.net/Lbinggao/article/details/106230513