Lecture Notes on 05 Nov 2012 def sort (a): for i in range (len(a) - 1): min = a[i] minIdx = i for j in range (i + 1, len(a)): if (a[j] < min): min = a[j] minIdx = j a[minIdx] = a[i] a[i] = min def binary_search (a, x): lo = 0 hi = len(a) -1 while (lo <= hi): mid = (lo + hi) // 2 if (a[mid] < x): lo = mid + 1 elif (a[mid] > x): hi = mid - 1 else: return mid return -1 def merge (a, b): c = [] idxA = 0 idxB = 0 while ((idxA < len(a)) and (idxB < len(b))): if (a[idxA] < b[idxB]): c.append (a[idxA]) idxA = idxA + 1 else: c.append (b[idxB]) idxB = idxB + 1 while (idxA < len(a)): c.append (a[idxA]) idxA = idxA + 1 while (idxB < len(b)): c.append (b[idxB]) idxB = idxB + 1 return c