七大排序总结

什么是时间复杂度?

简而言之:时间复杂度就是语句总的执行次数。

什么是空间复杂度?

简而言之:空间复杂度就是语句中变量创建的个数。

什么是稳定性?

简而言之:稳定性就是待排序的数据中,可能含有多个相同的数据,排完序后。没有改变相等数据的位置。就可以称此算法稳定。

例如

七大排序总结_第1张图片

插入排序

把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为 止,得到一个新的有序序列 。

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:         稳定                                                  

希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。当到达=1时,所有记录在统一组内排好序。

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:         不稳定   

选择排序

假设数组长度为n,需要进行n-1次比较,每次比较选出一个最小值往前面放,直到n - i - 1次循环结束,把数组中所以数据排完就结束。

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:         不稳定   

堆排序

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是 通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆。

时间复杂度:O(N*logN)

空间复杂度:O(1)

稳定性:         不稳定   

冒泡排序

两两相邻元素进行比较,前一个比后一个大就交换它们两个的位置,每一趟选出一个最大的数。

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:         稳定   

快速排序

任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。

时间复杂度:最坏:O(N^2)    最好:O(N*logN)

空间复杂度:O(logN)

稳定性:         不稳定   

归并排序

将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。

时间复杂度:O(N*logN)

空间复杂度:O(N)

稳定性:         不稳定   

总结

七大排序总结_第2张图片

经过学习这是我目前的理解,有不对的地方欢迎各位指正。 

你可能感兴趣的:(排序算法,算法,数据结构)