Presorting
来源:互联网 发布:手机电子狗软件那个准 编辑:程序博客网 时间:2024/06/06 20:25
Exercises 6.1
1def 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 ret3
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 ret6
0 0