1、快速排序
一 、算法介绍
排序算法(Sorting algorithm)是计算机科学最古老的、最基本的算法之一。其中‘快速排序’(Quicksort)使用得最广泛,速度也较快,它是图灵奖得主托尼*霍尔于1960时提出来的。
二、算法原理
1 在数列之中、选择一个元素作为“”基础“”(pivot)或者叫比较值;
2 数列中所有元素都和这个基准值进行比较,如果比基准值小就移到基准的左边,如果比基准值大就移到基准值得右边;
3 以基准值左右两边的子列作为新数据,不断重复第一步和第二部,直到所有子集只剩下一个元素为止。
三、代码实现
def quick_sort(arr): if len(arr) < 2: return arr mid = arr[len(arr)//2] left,right = [], [] arr.remove(mid) for item in arr: if item >= mid: right.append(item) else: left.append(item) return quick_sort(left) + [mid] + quick_sort(right) if __name__ == "__main__": arr = [3, 44, 5, 6, 55, 100, 4, 7, 102, 88,1,88,7] print quick_sort(arr)
四、算法分析
1 稳定性:快速排序是一种不稳定排序,当基准值前后都存在于基准值相同的元素,那么相同值就会被放在一边,这样就打乱了之前的相对顺序。
2 比较性:因为排序时元素之间需要比较,所以是比较排序。
3 时间复杂度:快速排序的时间复杂度为O(nlogn)
4 空间复杂度,排序时需要另外申请控制,并且随着数列规模增大而增大,其复杂度为O(nlogn)
事事有回音
凡事有交代
件件有着落

浙公网安备 33010602011771号