-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearching.js
More file actions
87 lines (81 loc) · 2.95 KB
/
searching.js
File metadata and controls
87 lines (81 loc) · 2.95 KB
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
81
82
83
84
85
86
87
const searchBtn = document.querySelector(".search-btn");
let startSearch = false;
const linearSearch = async function (key) {
startSearch = true;
const linearBar = document.querySelectorAll(".bar-linear");
const linearHead = document.querySelector("#linear-index");
for (let i = 0; i < linearBar.length; i++) {
await waitforme(100);
linearBar[i].style.background = "#FBCEB1";
if (parseInt(linearBar[i].style.height) === key) {
linearBar[i].style.background = "#006400";
// console.log(i);
linearHead.innerHTML = `Linear Search(Element found at index ${i})`;
linearHead.style.color = "#ACE1AF";
return;
}
}
linearHead.innerHTML = `Linear Search(Element not found)`;
linearHead.style.color = "#E23D28";
};
const binarySearch = async function (key) {
const binaryBar = document.querySelectorAll(".bar-binary");
const binaryHead = document.querySelector("#binary-index");
start = 0;
end = 149;
while (start <= end) {
await waitforme(100);
let mid = parseInt((start + end) / 2);
binaryBar[mid].style.background = "#FBCEB1";
if (parseInt(binaryBar[mid].style.height) === key) {
binaryBar[mid].style.background = "#006400";
binaryHead.innerHTML = `Binary Search(Element found at index ${mid})`;
binaryHead.style.color = "#ACE1AF";
return;
} else if (parseInt(binaryBar[mid].style.height) > key) {
end = mid - 1;
} else {
start = mid + 1;
}
}
binaryHead.innerHTML = `Binary Search(Element not found)`;
binaryHead.style.color = "#E23D28";
};
const disableSearchBtn = function () {
searchBtn.disabled = true;
document.querySelector("#search-number").disabled = true;
document.querySelector(".search-new").disabled = true;
};
const enableSearchBtn = function () {
searchBtn.disabled = false;
document.querySelector("#search-number").disabled = false;
document.querySelector(".search-new").disabled = false;
};
const refresh = function () {
const binaryBar = document.querySelectorAll(".bar-binary");
const linearBar = document.querySelectorAll(".bar-linear");
for (let j = 0; j < 150; j++) {
binaryBar[j].style.background = "aqua";
linearBar[j].style.background = "aqua";
}
const binaryHead = document.querySelector("#binary-index");
const linearHead = document.querySelector("#linear-index");
binaryHead.innerHTML = "Binary Search";
linearHead.innerHTML = "Linear Search";
binaryHead.style.color = "#edf0f1";
linearHead.style.color = "#edf0f1";
};
searchBtn.addEventListener("click", async function () {
const key = parseInt(document.querySelector("#search-number").value);
document.querySelector("#search-number").value = "";
if (Number.isNaN(key)) {
alert("Please enter a number");
return;
}
if (startSearch) {
refresh();
}
disableSearchBtn();
await Promise.all([linearSearch(key), binarySearch(key)]);
enableSearchBtn();
});