-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Copy pathexponential_search.jl
80 lines (69 loc) · 2.07 KB
/
exponential_search.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"""Julia program to implement Exponential Search algorithm.
Exponential Search Algorithm is an optimized Binary Search to search an element in sorted array.
It is specifically used when the size of array is infinite.
"""
function binary_search(arr, low, n, ele)
high = n
while high >= low
mid = low + (high - low) ÷ 2
# If the mid element is the required element, return that index
if(arr[mid] == ele)
return mid
# ele is greater than mid element then ele would be present in first half of the array
elseif (arr[mid] > ele)
high = mid - 1
#Else if ele is smaller than mid element then ele would be present in last half of the array
else
low = mid + 1
end
end
# If the element is not found return 0
return 0
end
function exponential_search(arr, n, ele)
if(arr[1] == ele)
return false
end
i = 2
while( i < n && arr[i] <= ele)
i = i * 2
end
mini = i < (n-1) ? i : (n-1)
return binary_search(arr, i÷2, mini, ele )
end
print("How many numbers are present in the array? ")
n = readline()
n = parse(Int, n)
if (n <= 0)
println("Array is Empty!!!")
exit()
end
arr = Int[]
print("Enter the numbers: ")
arr = [parse(Int, num) for num in split(readline())]
print("Which number do you want to search in the array? ")
ele = readline()
ele = parse(Int, ele)
# Sort the array in ascending order
arr = sort(arr)
res = exponential_search(arr, n, ele)
if (res == 0)
print("The number $ele is not present in the array")
else
print("The number $ele is present in the array.")
end
"""
Time Complexity - O(log(n)), where 'n' is the size of the array
Space Complexity - O(n)
SAMPLE INPUT AND OUTPUT
SAMPLE I
How many numbers are present in the array? 5
Enter the numbers: 1 2 3 4 5
Which number do you want to search in the array? 6
The number 6 is not present in the array
SAMPLE II
How many numbers are present in the array? 3
Enter the numbers: 3 1 2
Which number do you want to search in the array? 2
The number 2 is present in the array.
"""