排序算法,python实现

1. 算法复杂度

2. 概念解释:

稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

不稳定:如果a原本在b前面,而a=b,排序之后a可能会出现在b的后面。

时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规律n的函数。

1. 冒泡排序(bubble sort)

冒泡排序从待排序的一组数的第一个数开始,每次比较相邻的两个数,如果顺序不对就交换位置,一直比较到最后一个数。这样遍历n次,可以得到按照顺序排列的数组。


2. 插入排序(insert sort)

第一个元素可以认为已经排序,从下一个元素开始,依次和前面已经排序完成的元素比较大小,插入到合适的位置,一直到最后一个元素。


3. 选择排序(select sort)

先选择最小的数放在第一位,作为已经排序,然后在未排序的数字中选择次小的数放在第二位,以此类推。


4. 希尔排序(shell sort)

把要排序的数组依照一定的间隔分成若干个子序列, 然后比较对应的子序列的数值并且交换位置,直到最后间隔为1.


5. 归并排序(merge sort)

从序列第一个元素开始,将序列每相邻的两个数字比较大小并排序,形成n/2个序列,排序后每个序列包含两个元素,将上述序列再次进行归并,形成n/4个序列,每个序列包含四个元素,重复以上步骤,直到所有元素排序完毕。



6. 快速排序(quick sort)

从序列中挑出一个元素,作为基准(base),把剩余的元素小于基准的放在基准的左边,大于基准的放在基准的右边,通过递归操作,不断调用quicksort,选择新的基准,最后得到排好的序列。


7. 堆排序(heap sort)

8. 计数排序(counting sort)

9. 桶排序(bucket sort)

10. 基数排序(radix sort)

猜你喜欢

转载自blog.csdn.net/weixin_39915444/article/details/80685121
今日推荐