// your code goes here
// your code goes here
// function bubbleSort(arr, n) {
// for(let i=0;i<n-1;i++) {
// for(let j=0;j<=n-i-2;j++) {
// if(arr[j]>arr[j+1]) {
// let tmp = arr[j];
// arr[j] = arr[j+1];
// arr[j+1] = tmp;
// // [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
// }
// }
// }
// return arr;
// }
// console.log(bubbleSort([4, 1, 3, 5, 2], 5))
// TC: O(n^2)
// SC: O(1)
// [4, 1, 3, 5, 2]
// i=0, j=0, 1, 2, 3 <= 5-2-0 (n-2-i)
// i=1, j=0, 1, 2 <= 5-2-1 (n-2-i)
function selectionSort(arr, n) {
for(let i=0;i<=n-2;i++) {
let min_elem_idx = i;
for(let j=i;j<=n-1;j++) {
if(arr[j] < arr[min_elem_idx]) {
min_elem_idx = j;
}
}
// swap arr[min_elem_idx] with arr[i]
let tmp = arr[min_elem_idx];
arr[min_elem_idx] = arr[i];
arr[i] = tmp;
// [arr[min_elem_idx], arr[i]] = [arr[i], arr[min_elem_idx]]
}
return arr;
}
console.log(selectionSort([4, 1, 3, 5, 2], 5))
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQovLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgovLyBmdW5jdGlvbiBidWJibGVTb3J0KGFyciwgbikgewovLyAJZm9yKGxldCBpPTA7aTxuLTE7aSsrKSB7Ci8vIAkJZm9yKGxldCBqPTA7ajw9bi1pLTI7aisrKSB7Ci8vIAkJCWlmKGFycltqXT5hcnJbaisxXSkgewovLyAJCQkJbGV0IHRtcCA9IGFycltqXTsKLy8gCQkJCWFycltqXSA9IGFycltqKzFdOwovLyAJCQkJYXJyW2orMV0gPSB0bXA7Ci8vIAkJCQkvLyBbYXJyW2pdLCBhcnJbaisxXV0gPSBbYXJyW2orMV0sIGFycltqXV07Ci8vIAkJCX0KLy8gCQl9Ci8vIAl9Ci8vIAlyZXR1cm4gYXJyOwovLyB9CgovLyBjb25zb2xlLmxvZyhidWJibGVTb3J0KFs0LCAxLCAzLCA1LCAyXSwgNSkpCgovLyBUQzogTyhuXjIpCi8vIFNDOiBPKDEpCgoKLy8gWzQsIDEsIDMsIDUsIDJdCgovLyBpPTAsIGo9MCwgMSwgMiwgMyA8PSA1LTItMCAobi0yLWkpCgovLyBpPTEsIGo9MCwgMSwgMiA8PSA1LTItMSAobi0yLWkpCgoKCmZ1bmN0aW9uIHNlbGVjdGlvblNvcnQoYXJyLCBuKSB7Cglmb3IobGV0IGk9MDtpPD1uLTI7aSsrKSB7CgkJbGV0IG1pbl9lbGVtX2lkeCA9IGk7CgkJZm9yKGxldCBqPWk7ajw9bi0xO2orKykgewoJCQlpZihhcnJbal0gPCBhcnJbbWluX2VsZW1faWR4XSkgewoJCQkJbWluX2VsZW1faWR4ID0gajsKCQkJfQoJCX0KCQkvLyBzd2FwIGFyclttaW5fZWxlbV9pZHhdIHdpdGggYXJyW2ldCgkJbGV0IHRtcCA9IGFyclttaW5fZWxlbV9pZHhdOwoJCWFyclttaW5fZWxlbV9pZHhdID0gYXJyW2ldOwoJCWFycltpXSA9IHRtcDsKCQkvLyBbYXJyW21pbl9lbGVtX2lkeF0sIGFycltpXV0gPSBbYXJyW2ldLCBhcnJbbWluX2VsZW1faWR4XV0KCX0KCXJldHVybiBhcnI7Cn0KCmNvbnNvbGUubG9nKHNlbGVjdGlvblNvcnQoWzQsIDEsIDMsIDUsIDJdLCA1KSk=