A Simple Code for an Array Search
Oct 22, 2020
Sharp my Python coding skills…
As a senior guy in IT, my most time has spent on architecture and “new technologies”, coding skill has shifted to 2nd place. But, occasionally writing a neat and smart code, still make me feel joy.
A matrix question is:
for each row and column, intergers are sort in ascending, from left to right, top to bottom:
[
[1,3,7,11]
[2,5,8,12]
[10,13,14,17]
[18,21,23,26]
]
find a numer, return false or true:
5, true
100, false
The idea is simple: trying to
- find the mid-point of a row
- compare the value of the mid-point to trying-to-find-value
- narrow down the search range to the left if less or right, if the mid-point is less or greater than tying-to-find-value
- repeat
cols= len(matrix[0])
for row in matrix:
midpoint = cols // 2
range_l = 0
range_r = cols
while True:
if row[midpoint] == target:
return True
elif row[midpoint] > target:
range_r = midpoint
elif row[midpoint] < target:
range_l = midpoint
shift = (range_r - range_l) // 2
midpoint = range_l + shift
if shift == 0:
if row[midpoint] == target:
return True
else:
break
return False
To speed up the performance, the above way isn’t the best, but it is neat and easy to understand to me.