快速排序
不稳定的算法主要思想: 1. 建立基准,通常是数据中的最右边数据,初始化的数据第一个元素不存储数据;
2. 通过设置左右指针,比较基准数据,大的放基准右边,小的放左边;
3. 依次递归左右分割区间;
时间复杂度:O(n*log2^n);空间复杂度:O(n);
代码
def quick_sort(arr, start, end):
arr[0] = arr[start]
left = start
right = end
while left < right:
while left < right and arr[0] < arr[right]:
right -= 1
if left < right:
arr[left] = arr[right]
left += 1
while left < right and arr[0] > arr[left]:
left += 1
if left < right:
arr[right] = arr[left]
right -= 1
arr[left] = arr[0]
if start < left:
quick_sort(arr, start, right - 1)
if left < end:
quick_sort(arr, right + 1, end)
if __name__ == '__main__':
array = [0, 16, 25, 39, 27, 12, 8, 45, 63]
quick_sort(array, 1, len(array) - 1)
print(array[1:])
[8, 12, 16, 25, 27, 39, 45, 63]
进程已结束,退出代码0