Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions bubble.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ async function bubble() {
const e = document.querySelectorAll(".bar");
for (let i = 0; i < e.length - 1; i++) {
for (let j = 0; j < e.length - i - 1; j++) {
if(paused==1){
await pauser()
}
e[j].style.background = "blue";
e[j + 1].style.background = "red";

Expand Down
12 changes: 8 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<div class="modal-dialog ">
<div class="modal-content text-dark">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">Performace of Your Sort</h5>
<h5 class="modal-title" id="staticBackdropLabel">Performance of Your Sort</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="content">
Expand Down Expand Up @@ -60,23 +60,27 @@ <h5 class="offcanvas-title" id="offcanvasNavbarLabel">Sorting Options</h5>
<button type="button" class="btn btn-outline-primary btn-dark insertionSort" data-bs-dismiss="offcanvas">Insertion Sort</button>
<button type="button" class="btn btn-outline-primary btn-dark mergeSort" data-bs-dismiss="offcanvas">Merge Sort</button>
<button type="button" class="btn btn-outline-primary btn-dark quickSort" data-bs-dismiss="offcanvas">Quick Sort</button>
<button type="button" class="btn btn-outline-primary btn-dark performance" data-bs-toggle="modal" data-bs-target="#staticBackdrop" data-bs-dismiss="offcanvas">Pefromance</button>
<button type="button" class="btn btn-outline-primary btn-dark performance" data-bs-toggle="modal" data-bs-target="#staticBackdrop" data-bs-dismiss="offcanvas">Performance</button>
</div>
</ul>

</div>
</div>
</div>
</nav>

<body class="p-2 mb-2 bg-dark text-white">
<div id="bars" class="flex-container"></div>
<div class="mt-5 float-left end-0 d-flex justify-content-center align-items-center">
<button id="pause" class="btn btn-outline-primary btn-dark" name="pause">Pause</button>
<label class="toggleLabel" for="switch"></label>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
<script src="sort.js"></script>
<script src="bubble.js"></script>
<script src="selection.js"></script>
<script src="insertion.js"></script>
<script src="quick.js"></script>
<script src="merge.js"></script>
</body>
</body>

</html>
6 changes: 6 additions & 0 deletions insertion.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@ async function insertion() {
const e = document.querySelectorAll(".bar");
e[0].style.background = "green";
for (let i = 1; i < e.length; i++) {
if(paused==1){
await pauser()
}
let j = i - 1;
let x = e[i].style.height;
e[i].style.background = "blue";
await waitForMe(delay);

while (j > -1 && parseInt(e[j].style.height) > parseInt(x)) {
if(paused==1){
await pauser()
}
e[j].style.background = "blue";
e[j + 1].style.height = e[j].style.height;
j--;
Expand Down
16 changes: 15 additions & 1 deletion merge.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,18 @@ async function merging(e, l, mid, r) {

for (let i = 0; i < n1; i++) {
await waitForMe(delay);
if(paused==1){
await pauser()
}
e[i + l].style.background = "orange";
left[i] = e[l + i].style.height;
}

for (let i = 0; i < n2; i++) {
await waitForMe(delay);
if(paused==1){
await pauser()
}
e[i + mid + 1].style.background = "yellow";
right[i] = e[mid + 1 + i].style.height;
}
Expand All @@ -23,7 +29,9 @@ async function merging(e, l, mid, r) {

while (i < n1 && j < n2) {
await waitForMe(delay);

if(paused==1){
await pauser()
}
if (parseInt(left[i]) <= parseInt(right[j])) {
if ((n1 + n2) === e.length) {
e[k].style.background = "green";
Expand All @@ -46,6 +54,9 @@ async function merging(e, l, mid, r) {
}

while (i < n1) {
if(paused==1){
await pauser()
}
if ((n1 + n2) === e.length) {
e[k].style.background = "green";
} else {
Expand All @@ -56,6 +67,9 @@ async function merging(e, l, mid, r) {
k++;
}
while (j < n2) {
if(paused==1){
await pauser()
}
if ((n1 + n2) === e.length) {
e[k].style.background = "green";
} else {
Expand Down
4 changes: 3 additions & 1 deletion quick.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ async function partion(e,l,r){
{
e[j].style.background = 'yellow';
await waitForMe(delay);

if(paused==1){
await pauser()
}
if(parseInt(e[j].style.height) < parseInt(e[r].style.height)){
i++;
swap(e[i],e[j]);
Expand Down
3 changes: 3 additions & 0 deletions selection.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ async function selection() {
let k = i;
e[i].style.background = "blue";
for (let j = i + 1; j < e.length; j++) {
if(paused==1){
await pauser()
}
e[j].style.background = "yellow";
await waitForMe(delay);
if (parseInt(e[j].style.height) < parseInt(e[k].style.height)) {
Expand Down
39 changes: 39 additions & 0 deletions sort.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,42 @@
paused=0;
let checkClass;
document.getElementById("pause").addEventListener("click",(e)=>{
paused=1;
document.getElementById("pause").textContent="Resume"
})

function pauser() {
return new Promise(resolve => {
let pauseclick = function () {
paused= 0;
document.getElementById("pause").textContent="Pause"
// Remove the event from play button
// after clicking play button
document.getElementById("pause")
.removeEventListener("click", pauseclick);

resolve("resolved");
}

// Here is the event listener for play
// button (instead of setTimeout) which
// will wait for the element to get click
// to get resolved until then it will be
// remain stucked inside Promise
document.getElementById("pause")
.addEventListener("click", pauseclick)
})
}
document.querySelector(".navbar-toggler").addEventListener("click",(e)=>{
document.getElementById("pause").style.display="none";
checkClass=window.setInterval(checkClassList,100)
});
function checkClassList(){
if(document.getElementById("offcanvasNavbar").classList.contains("hiding")){
document.getElementById("pause").style.display="block"
window.clearInterval(checkClass)
}
}
function swap(i, j) {
let temp = i.style.height;
i.style.height = j.style.height;
Expand Down