快速排序是对冒泡排序的一种改进,选定一个基元素,将所有小于基元素的元素移动到左边,大于基元素的元素移动到右边,这样的话,基元素的位置则是最终的位置,通过递归算法对左右分别进行排序。快速排序是一种不稳定的排序算法,平均时间复杂度为O(nlogn),代码如下:
# 快速排序 ''' 每次选择一个元素,比这个元素大的元素移动到这个元素的右边,小的移动到此元素的左边 即此元素处于自己排好序的位置,递归对左右区间分别排序 ''' def QuickSort(arr, start, end): if start>=end: return left, right = start, end # 取最后一个元素为基元素 baseElement = arr[end] # 保存基元素 while left<right: while left<right and arr[left]<=baseElement: left+=1 arr[right] = arr[left] while left<right and arr[right]>=baseElement: right-=1 arr[left] = arr[right] arr[left] = baseElement QuickSort(arr, start, left-1) QuickSort(arr, left+1, end) return arr if __name__ == '__main__': arr = [4,2,1,5,6,7,11,9] ans = QuickSort(arr, 0, len(arr)-1) print(ans)
快速排序
最新推荐文章于 2023-05-17 16:24:25 发布