Presorting

来源:互联网 发布:手机电子狗软件那个准 编辑:程序博客网 时间:2024/06/06 20:25

Exercises 6.1

1

def min_diff(L):    n = len(L)    if n > 1:        L = sorted(L)        md = L[1] - L[0]        i = 2        while i < n:            d = L[i] - L[i - 1]            if d < md:                md = d            i += 1        return md    else:        raise ValueError("Bad input, at least there is 2 elements in " + str(L))
2
def intersection_v1(A, B):    A = sorted(A)    B = sorted(B)    ret = []    i = 0    j = 0    while i < len(A) and j < len(B):        if A[i] < B[j]:            i += 1        elif A[i] > B[j]:            j += 1        else:            ret.append(A[i])            i += 1            j += 1    return retdef intersection_v2(A, B):    S = set(B)    ret = []    for a in A:        if a in S:            ret.append(a)    return ret
3
def min_max(L):    n = len(L)    ret = None    if n > 1:        big = L[0]        small = L[1]        if big < small:            big, small = small, big        i = 2        for j in range((n - 2)//2):            if L[i] < L[i + 1]:                if small > L[i]:                    small = L[i]                if big < L[i + 1]:                    big = L[i + 1]            else:                if small > L[i + 1]:                    small = L[i + 1]                if big < L[i]:                    big = L[i]            i += 2        if i < n:            if small > L[i]:                small = L[i]            elif big < L[i]:                big = L[i]        ret = (small, big)    else:        if n == 1:            ret = (L[0], L[0])    return ret
6                             

0 0
原创粉丝点击