Search for question
Question

Given an array of unsorted integers, you are requested to investigate whether there exist

a pair of numbers in this array that has a sum equal to a given key or not. For example, if

the arr = [8, 7, 2, 5, 3] and the key = 12, the answer will be "Yes" as the array has a pair

(7 and 5) where their sum= 12 = key, otherwise "No" is returned. To solve this problem,

the following idea can be used:

i. Consider every pair in the given array and check if their sum = key.

ii. Sort the array first, keeping two pointers to on the minimum and maximum of the

array and then move from both directions toward the center of the array while

checking whether the sum = key or not.

Answer the following questions:

a) Transform each of the above ideas (i) & (ii) into algorithm (pseudocode) and

compute their complexities

b) Critic these two ideas: [Which is better? Why?]

c) Design a better solution with less complexity. [note: your idea should be explained

in simple English, transformed into algorithm (pseudocode),

d) Implement your solution in Q(C) using python.