数据结构排序方法顺口溜
排序是计算机中常用的基本操作之一,也是一种重要的算法。在数据结构中,排序算法可以分为两大类,一种是基于比较的排序方法,一种是基于非比较的排序方法。基于比较的排序方法是指通过比较两个数据的大小来进行排序,比如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。基于非比较的排序方法是指通过不直接比较元素大小来进行排序,比如计数排序、桶排序、基数排序等。下面为大家介绍数据结构中的排序方法,记忆方法为顺口溜。
一、冒泡排序
最大的出来泡泡游,每次两两比较相邻数。时间复杂度为O(n^2),适合于元素比较少的情况。
二、选择排序
大的选择最右边,每次找出最小元素,放到数组的起始位置。时间复杂度为O(n^2),适合于元素比较少的情况。
三、插入排序
乱序插入到有序队,把数据插入到已经排序好的数据序列中。时间复杂度为O(n^2),适合于元素比较少的情况。
四、快速排序
快速排序最快了,采用分治法的思想,选择一个基准元素,将数组分成左右两个部分,使左边的元素都比基准元素小,右边的元素都比基准元素大。时间复杂度平均为O(nlogn),最坏情况下为O(n^2),是排序算法中效率较高的一种。
五、归并排序
归并排序太好用,采用分治法的思想,将原始数组分解为很多小的数组进行排序,之后再将排好序的小数组合并起来。时间复杂度为O(nlogn),但是需要辅助存储空间。
六、堆排序
堆排序像堆扑克牌,将数组元素看作是一颗完全二叉树的节点,将根节点与最后一个节点互换,重新调整堆,保证堆的性质,然后重复操作,直到所有元素排序完成。时间复杂度为O(nlogn),不需要额外空间。
七、计数排序
计数排序本领高强,是一种非比较的排序算法,通过统计每个元素出现的次数,来实现排序。时间复杂度为O(n+k),需要额外空间,适合于值比较小的元素排序。
八、桶排序
桶排序效率惊人,是一种非比较的排序算法,将待排元素分到不同的桶里,每个桶排序之后归并成有序序列。时间复杂度为O(n),但是也需要额外空间,适合于元素值比较分散的情况。
九、基数排序
基数排序牛气冲天,也是一种非比较的排序算法,将待排元素按照位数进行排序,可以先按照个位数排序,再按照十位数排序,以此类推。时间复杂度为O(nk),需要额外空间。适合于元素数值比较大且位数比较少的情况。