算法工程师之排序算法-Python

被刻印的时光 ゝ 提交于 2019-11-28 15:36:35

一个合格的算法工程师应该具有熟练写各种排序算法的本领

1,快速排序(n*logn)

主要就是划分过程,即选取一个值将list中不大于该数的放在该数左边,不小于该数的放在该数右边,然后分别对左右两个区间递归划分。

def sortmy(arr, low, high):
    if low < high:
        n = partition(arr, low, high)
        sortmy(arr, low, n - 1)
        sortmy(arr, n+1, high)


def partition(arr, low, high):
    key = arr[low]
    while low < high:
        while low < high and arr[high] >= key:
            high -= 1
        arr[low] = arr[high]
        while low < high and arr[low] <= key:
            low += 1
        arr[high] = arr[low]

    arr[low] = key
    return low


arr = list(map(int, input().split()))
sortmy(arr, 0, len(arr) - 1)
print(arr)

2, 冒泡排序(n^2)

每次循环将最大的值放在数组最后

def sortmy(arr, n):
    while n:
        for i in range(n-1):
            if arr[i] > arr[i+1]:
                arr[i], arr[i+1] = arr[i+1], arr[i]
        n -= 1


arr = list(map(int, input().split()))
sortmy(arr, len(arr))
print(arr)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!