快排,取一个key值,一般取第一个即可,将小于key的放到左边,大于key的放到右边,递归实现 import random def quicksort(data, low = 0, high = None): if high == None: high = len(data) - 1 if low < high: s, i, j = data[low], low, high while i < j: while i < j and data[j] >= s: j = j - 1 i…
def qsort(arr, start, end): if start > end: return def partition(arr, start, end): pivot = arr[start] i = start+1 while i <= end: if pivot < arr[i]: arr[i], arr[end] = arr[end], arr[i] end -= 1 else: i += 1 if end > start: arr[start], arr[end]…
两头开始 以第一个为基准,从有往左,找第一个比基准数 大的,然后交换 从左往右,找第一个比基准数晓得,然后交换 遍历剩下的 基准数 左边的数们 以及 基准数 右边的数们 def quick_sort(array,left,right): if left > right: return low = left high = right key = array[low] while left < right: while left <right and array[right] >…
def quick_sort(alist, first, last): if first >= last: # 如果开始等于结尾,即就一个元素 return mid_value = alist[first] low = first high = last # 对于相等的情况都放到low的位置,所以第一个条件是>=.数据尽量放在一边. while low < high: # hight开始移动,左移所以-1 while low < high and alist[high] >=…
# -*- coding: utf-8 -*- def quicksort(array): # 基线条件:为空或只包含一个元素的数组是"有序"的 if len(array) < 2: return array else: pivot = array[0] # 递归条件 less = [i for i in array[1:] if i <= pivot] # 由所有小于基准值的元素组成的子数组 greater = [i for i in array[1:] if i >…