Using Figure 2.2 as a model, illustrate the operation of INSERTION-SORT on the array
$$A = \left \langle 31, 41, 59, 26, 41, 58 \right \rangle$$ .
$$A = \left \langle 31, 41, 59, 26, 41, 58 \right \rangle$$ $$A = \left \langle 31, 41, 59, 26, 41, 58 \right \rangle$$ $$A = \left \langle 26, 31, 41, 59, 41, 58 \right \rangle$$ $$A = \left \langle 26, 31, 41, 41, 59, 58 \right \rangle$$ $$A = \left \langle 26, 31, 41, 41, 58, 59 \right \rangle$$
Rewrite the INSERTION-SORT procedure to sort into nonincreasing instead of nondecreasing order.
def insertion_sort(a):
for j in range(1, len(a)):
key = a[j]
i = j - 1
while i >= 0 and a[i] < key:
a[i + 1] = a[i]
i -= 1
a[i + 1] = key
Consider the searching problem:
Input: A sequence of
$$n$$ numbers$$A = \left \langle a_1, a_2, \cdots, a_n\right \rangle$$ and a value$$v$$ .Output: An index
$$i$$ such that$$v=A[i]$$ or the special value NIL if$$v$$ does not appear in A.Write pseudocode for linear search, which scans through the sequence, looking for
$$v$$ . Using a loop invariant, prove that your algorithm is correct. Make sure that your loop invariant fulfills the three necessary properties.
def linear_search(a, v):
for i in range(len(a)):
if a[i] == v:
return i
return None
Consider the problem of adding two n-bit binary integers, stored in two n-element arrays
$$A$$ and$$B$$ . The sum of the two integers should be stored in binary form in an$$(n+1)$$ -element array$$C$$ . State the problem formally and write pseudocode for adding the two integers.
def add_binary(a, b):
n = len(a)
c = [0 for _ in range(n + 1)]
carry = 0
for i in range(n):
c[i] = a[i] + b[i] + carry
if c[i] > 1:
c[i] -= 2
carry = 1
else:
carry = 0
c[n] = carry
return c