
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
排序算法是软件编程开发程序员都需要熟练掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,常见排序算法类型都有哪些。
一、快速排序(QuickSort)
快速排序采用分治法。先从数列中挑出一个元素作为中间值。依次遍历数据,所有比中间值小的元素放在左边,所有比中间值大的元素放在右边。然后按此方法对左右两个子序列分别进行递归操作,直到所有数据有序。理想的情况是,每次划分所选择的中间数恰好将当前序列几乎等分(均匀排布),整个算法的时间复杂度为O(nlogn)。坏的情况是,每次所选的中间数是当前序列中的大或小元素(正序和逆序都是坏),整个排序算法的时间复杂度为O(n²)。
平均时间复杂度为O(nlogn),空间复杂度为O(logn),是一种不稳定的排序算法。
二、、选择排序(SelectionSort)
遍历所有数据,先在数据中找出大或小的元素,放到序列的起始;然后再从余下的数据中继续寻找大或小的元素,依次放到序列中直到所有数据有序。原始数据的排列顺序不会影响程序耗费时间O(n²),相对费时,不适合大量数据排序。
平均时间复杂度为O(n²),空间复杂度为O(1),是一种不稳定的排序算法。
三、插入排序(InsertionSort)
将前i个(初始为1)数据假定为有序序列,依次遍历数据,将当前数据插入到前述有序序列的适当位置,形成前i+1个有序序列,依次遍历完所有数据,直至序列中所有数据有序。数据是反序时,耗费时间长O(n²);数据是正序时,耗费时间短O(n)。适用于部分数据已经排好的少量数据排序。
平均时间复杂度为O(n²),空间复杂度为O(1),是一种稳定的排序算法。
四、希尔排序(ShellSort)
希尔排序也称递减增量排序,是对插入排序的改进,以牺牲稳定性的方法提高效率。基本思路是先将整个数据序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全部数据进行依次直接插入排序,直至所有数据有序。希尔排序算法的性能与所选取的分组长度序列有很大关系,复杂度下界为O(nlog²n),在中等规模的数据中表现良好。
平均时间复杂度为O(n^3/2),空间复杂度为O(1),是一种不稳定的排序算法。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。