秋招复习每日温习

一、算法

  1. 快排
    (一)递归
# -*- coding: utf-8 -*-
# 参考链接(python递归实现) http://python.jobbole.com/82270/
# 伪代码 https://hit-alibaba.github.io/interview/basic/algo/Sorting.html?q=

def q_sort(lists, left, right):
    # 一趟
    if left >= right:  # todo >=
        return lists
    key = lists[left]
    low = left
    high = right

    while left < right:
        while left < right and lists[right] >= key:  # todo 1. left 不能 <= right 2. lists[right]可以 >= key
            right -= 1
        lists[left] = lists[right]

        while left < right and lists[left] <= key:
            left += 1

        lists[right] = lists[left]
    lists[left] = key  # todo 都可以

    # 递归左边 & 右边
    mid = left
    q_sort(lists, low, mid - 1)
    q_sort(lists, mid + 1, high)
    return lists


a = [3, 5, 6, 1, 2]
# a = [1, 2, 3, 5, 6]
a = q_sort(a, 0, 4)
print(a)

(二)非递归

# -*- coding: utf-8 -*-


def q_sort_by_stack(lt, st):

    while True:
        if st == []:
            return lt

        right = st.pop()
        left = st.pop()

        key = lt[left]
        low = left
        high = right
        while left < right:
            while left < right and lt[right] >= key:
                right -= 1
            lt[left] = lt[right]

            while left < right and lt[left] <= key:
                left += 1
            lt[right] = lt[left]
        lt[left] = key
        mid = left

        if mid - 1 > low:
            st.append(low)
            st.append(mid - 1)
        if high > mid + 1:
            st.append(mid + 1)
            st.append(high)

    # return lt


def q_sqort(lt):
    if lt is None or len(lt) <= 1:
        return lt
    st = []
    st.append(0)
    st.append(len(lt) - 1)
    return q_sort_by_stack(lt, st)


a = [3, 5, 1, 2, 4]
a = q_sqort(a)
print(a)

二、数据结构

三、 python基础

四、计算机基础(操作系统,计算机网络)

五、web后台基础

六、shell

猜你喜欢

转载自blog.csdn.net/guoyu137996643/article/details/82953567
今日推荐