常见的排序算法

  • 选择排序
  • 快速排序


选择排序

# selectSort
def fineMin(arr):
    min_index = 0
    min = arr[0]
    for i in range(1,len(arr)):
        if arr[i] < min:
            min_index = i
    return min_index

def selectSort(arr):
    new_arr = [] #定义空数组用来存放数据
    for i in range(len(arr)):
        min_index = fineMin(arr)
        new_arr.append(arr.pop(min_index))
    return new_arr

Python里rank函数怎么用 python rank排序_数组,解释:
  例如对于 [ 7 3 5 1 2 8 0 ] 含7个元素的数组,从小到大排序,使用选择排序的方法为:
  第一步:遍历整个待排序的数组,查找到最小值0,放入新数组中 [ 0 ],剩余的数组为 [ 7 3 5 1 2 8 ];
  第二步:遍历整个待排序的数组,查找到最小值1,放入新数组中 [ 0 1 ],剩余的数组为 [ 7 3 5 2 8 ];
  第三步:遍历整个待排序的数组,查找到最小值2,放入新数组中 [ 0 1 2 ],剩余的数组为 [ 7 3 5 8 ];
  第四步:遍历整个待排序的数组,查找到最小值3,放入新数组中 [ 0 1 2 3 ],剩余的数组为 [ 7 5 8 ];
  第五步:遍历整个待排序的数组,查找到最小值5,放入新数组中 [ 0 1 2 3 5 ],剩余的数组为 [ 7 8 ];
  第六步:遍历整个待排序的数组,查找到最小值7,放入新数组中 [ 0 1 2 3 5 7 ],剩余的数组为 [ 8 ];
  第七步:遍历整个待排序的数组,查找到最小值8,放入新数组中 [ 0 1 2 3 5 7 8 ],剩余的数组为 [ ];
  上述中每一步的时间复杂度为 Python里rank函数怎么用 python rank排序_数组_02 ,一共有 Python里rank函数怎么用 python rank排序_python_03 步,因此选择排序的时间复杂度为 Python里rank函数怎么用 python rank排序_数组。由此可见,选择排序并不是一种很高效的排序方法。

快速排序

def quickSort(arr):
    if len(arr) < 2:
        return arr
    else:
        basic = arr[0] # 数组的第一个值为基准值
        less = [ i for i in arr[1:] if i <= basic] # 小于基准值的子数组
        greater = [i for i in arr[1:] if i > basic] #大于基准值的子数组
        return quickSort(less) + [basic] + quickSort(greater)

Python里rank函数怎么用 python rank排序_数组_05 ,解释:
  当选择基准数据时,该数据在通常情况下,能将待排序的数据较为平均地分成两部分:
  举个最理想的情况:
  对 [ 1 2 3 4 5 6 7 8 9 ] 待排序的数组使用快速排序,(【】内为基准数据,QS是quickSort的缩写)
第一步:     QS[1 2 3 4]     【5】         QS[ 6 7 8 9]
第二步:   QS[1] 【2】  QS[ 3 4]          QS[6] 【7】   QS[8 9]
第三步:         【3】QS[4]                【8】QS[9]

Python里rank函数怎么用 python rank排序_python_03 步,时间复杂度为 Python里rank函数怎么用 python rank排序_数组_02 ,该理想情况下,只需 Python里rank函数怎么用 python rank排序_python_08 步,因此所需的时间复杂度为 Python里rank函数怎么用 python rank排序_数组_05