Divide et Impera (Bars)
by MariusNastasa
HTML
<h3>Divide et Impera (Binary Search)</h3>
<input type="number" id="number" />
<button onClick="addToArray()">Add Number</button>
<hr> Numerele sunt:
<div id="array"></div>
<hr>
<button onclick='document.getElementById("result").innerHTML = mergeSort(a)'>SORT</button>
<div id="result"></div>
<br>
<hr>
<input type="number" placeholder="Valoarea de cautare" id="searchNumber">
<button onclick='document.getElementById("resultBinarySearch").innerHTML = binarySearch(document.getElementById("searchNumber").value)' id="button">Binary Search</button>
<div id="resultBinarySearch"></div>
<button onclick="addBox()">Add Box</button>
<div id="array" class="bars"></div>
<button onclick='displayBox(array)' id="button">Display</button>
<hr>
JavaScript
var a = [];
function addToArray() {
var number = document.getElementById("number").value;
a.push(Number(number));
document.getElementById("array").innerHTML = a;
}
function mergeSort(a) {
if (a.length < 2) {
return a;
}
var mijloc = parseInt(a.length / 2);
var stanga = a.slice(0, mijloc);
var dreapta = a.slice(mijloc, a.length);
return merge(mergeSort(stanga), mergeSort(dreapta));
}
function merge(s, d) {
var result = [];
while (s.length && d.length) {
if (s[0] <= d[0]) {
result.push(s.shift())
} else {
result.push(d.shift())
}
}
while (s.length) {
result.push(s.shift())
}
while (d.length) {
result.push(d.shift())
}
return result;
}
function binarySearch(v) {
var low = 0;
var high =a.length - 1;
var mid = parseInt((low + high) / 2);
while (low <= high && a[mid] != v) {
if (a[mid] < v) {
low = mid + 1;
mid = parseInt((low + high) / 2);
} else {
high = mid - 1;
mid = parseInt((low + high) / 2);
console.log(mid);
}
}
if(low>high){
mid="Nu s-a gasit"
}else{
return mid;
}
}
var low = 0;
var high =a.length - 1;
var mid = parseInt((low + high) / 2);
function displayBoxArray(array, high, low) {
var boxOfNumbers = document.createElement("div");
for (var i=0; i < array.length; i++) {
var divNumber = document.createElement("div");
divNumber.appendChild(document.createTextNode(array[i]));
divNumber.setAttribute("style", "background:red;width:15px;heigth:15px;margin:2px;display:inline-block;align:");
boxOfNumbers.appendChild(divNumber);
}
document.body.appendChild(boxOfNumbers);
}
displayBox(array);