// // your code goes here
function bubbleSort(arr, n) {
let swapped;
for(let i=0;i<n-1;i++) {
swapped = false;
for(let j=0;j<=n-2-i;j++) {
if(arr[j]>arr[j+1]) {
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
// [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
swapped = true;
}
}
if(swapped == false) {
return arr;
}
}
return arr;
}
// console.log(bubbleSort([5, 6, 1, 3], 4))
// TC: O(n^2)
// SC: O(1)
function selectionSort(arr, n) {
for(let i=0;i<n-1;i++){
// find the min_elem_idx from i to n-1
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 the min_elem_idx th element with ith element
let temp = arr[i];
arr[i] = arr[min_elem_idx];
arr[min_elem_idx] = temp;
}
return arr;
}
console.log(selectionSort([5, 1, 7, 2, 4, 99, 5], 7))
Ly8gLy8geW91ciBjb2RlIGdvZXMgaGVyZQpmdW5jdGlvbiBidWJibGVTb3J0KGFyciwgbikgewoJbGV0IHN3YXBwZWQ7Cglmb3IobGV0IGk9MDtpPG4tMTtpKyspIHsKCQlzd2FwcGVkID0gZmFsc2U7CgkJZm9yKGxldCBqPTA7ajw9bi0yLWk7aisrKSB7CgkJCWlmKGFycltqXT5hcnJbaisxXSkgewoJCQkJbGV0IHRlbXAgPSBhcnJbal07CgkJCQlhcnJbal0gPSBhcnJbaisxXTsKCQkJCWFycltqKzFdID0gdGVtcDsKCQkJCQoJCQkJLy8gW2FycltqXSwgYXJyW2orMV1dID0gW2FycltqKzFdLCBhcnJbal1dOwoJCQkJc3dhcHBlZCA9IHRydWU7CgkJCX0KCQl9CgkJaWYoc3dhcHBlZCA9PSBmYWxzZSkgewoJCQlyZXR1cm4gYXJyOwoJCX0KCX0KCXJldHVybiBhcnI7Cn0KCi8vIGNvbnNvbGUubG9nKGJ1YmJsZVNvcnQoWzUsIDYsIDEsIDNdLCA0KSkKCi8vIFRDOiBPKG5eMikKLy8gU0M6IE8oMSkKCmZ1bmN0aW9uIHNlbGVjdGlvblNvcnQoYXJyLCBuKSB7Cglmb3IobGV0IGk9MDtpPG4tMTtpKyspewoJCS8vIGZpbmQgdGhlIG1pbl9lbGVtX2lkeCBmcm9tIGkgdG8gbi0xCgkJbGV0IG1pbl9lbGVtX2lkeCA9IGk7CgkJZm9yKGxldCBqPWkrMTtqPG47aisrKXsKCQkJaWYoYXJyW2pdIDwgYXJyW21pbl9lbGVtX2lkeF0pIHsKCQkJCW1pbl9lbGVtX2lkeCA9IGo7CgkJCX0KCQl9CgkJCgkJLy8gc3dhcCB0aGUgbWluX2VsZW1faWR4IHRoIGVsZW1lbnQgd2l0aCBpdGggZWxlbWVudAoJCWxldCB0ZW1wID0gYXJyW2ldOwoJCWFycltpXSA9IGFyclttaW5fZWxlbV9pZHhdOwoJCWFyclttaW5fZWxlbV9pZHhdID0gdGVtcDsKCX0KCXJldHVybiBhcnI7Cn0KCmNvbnNvbGUubG9nKHNlbGVjdGlvblNvcnQoWzUsIDEsIDcsIDIsIDQsIDk5LCA1XSwgNykp