// your code goes here
function bubbleSort(arr, n) {
// n=5, i=0, j<4, j=0, 1, 2, 3
// n=5, i=1, j<3, j=0, 1, 2
let swapped;
for(let i=0;i<n-1;i++){ // i is the iteration no
swapped = false;
for(let j=0;j<n-i-1;j++) {
if(arr[j] > arr[j+1]) {
let tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
swapped = true;
}
}
if(swapped == false) {
break;
}
}
return arr;
}
// TC: O(n^2)
// SC: O(1)
// console.log(bubbleSort([8, 3, 1, 9, 4], 5))
function selectionSort(arr, n) {
for(let i=0;i<n-1;i++) {
// find the index of the mimimum element from i to n-1
// and swap that with ith element
let min_elem_idx = i;
for(let j=i+1;j<n;j++) {
if(arr[j] < arr[min_elem_idx]) {
min_elem_idx = j;
}
}
// swap arr[min_elem_idx] with arr[i]
let tmp = arr[i];
arr[i] = arr[min_elem_idx];
arr[min_elem_idx] = tmp;
}
return arr;
}
console.log(selectionSort([8, 3, 1, 9, 4], 5))
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQoKZnVuY3Rpb24gYnViYmxlU29ydChhcnIsIG4pIHsKCS8vIG49NSwgaT0wLCBqPDQsIGo9MCwgMSwgMiwgMwoJLy8gbj01LCBpPTEsIGo8Mywgaj0wLCAxLCAyCglsZXQgc3dhcHBlZDsKCWZvcihsZXQgaT0wO2k8bi0xO2krKyl7IC8vIGkgaXMgdGhlIGl0ZXJhdGlvbiBubwoJCXN3YXBwZWQgPSBmYWxzZTsKCQlmb3IobGV0IGo9MDtqPG4taS0xO2orKykgewoJCQlpZihhcnJbal0gPiBhcnJbaisxXSkgewoJCQkJbGV0IHRtcCA9IGFycltqXTsKCQkJCWFycltqXSA9IGFycltqKzFdOwoJCQkJYXJyW2orMV0gPSB0bXA7CgkJCQlzd2FwcGVkID0gdHJ1ZTsKCQkJfQoJCX0KCQlpZihzd2FwcGVkID09IGZhbHNlKSB7CgkJCWJyZWFrOwoJCX0KCX0KCXJldHVybiBhcnI7Cn0KCi8vIFRDOiBPKG5eMikKLy8gU0M6IE8oMSkKCi8vIGNvbnNvbGUubG9nKGJ1YmJsZVNvcnQoWzgsIDMsIDEsIDksIDRdLCA1KSkKCmZ1bmN0aW9uIHNlbGVjdGlvblNvcnQoYXJyLCBuKSB7Cglmb3IobGV0IGk9MDtpPG4tMTtpKyspIHsKCQkvLyBmaW5kIHRoZSBpbmRleCBvZiB0aGUgbWltaW11bSBlbGVtZW50IGZyb20gaSB0byBuLTEgCgkJLy8gYW5kIHN3YXAgdGhhdCB3aXRoIGl0aCBlbGVtZW50CgkJbGV0IG1pbl9lbGVtX2lkeCA9IGk7CgkJZm9yKGxldCBqPWkrMTtqPG47aisrKSB7CgkJCWlmKGFycltqXSA8IGFyclttaW5fZWxlbV9pZHhdKSB7CgkJCQltaW5fZWxlbV9pZHggPSBqOwoJCQl9CgkJfQoJCS8vIHN3YXAgYXJyW21pbl9lbGVtX2lkeF0gd2l0aCBhcnJbaV0KCQlsZXQgdG1wID0gYXJyW2ldOwoJCWFycltpXSA9IGFyclttaW5fZWxlbV9pZHhdOwoJCWFyclttaW5fZWxlbV9pZHhdID0gdG1wOwoJfQoJcmV0dXJuIGFycjsKfQoKY29uc29sZS5sb2coc2VsZWN0aW9uU29ydChbOCwgMywgMSwgOSwgNF0sIDUpKQ==