// your code goes here
// j < n-i-1
// i=0th pass, j<=n-2 < n-1
// i=1th pass, j<=n-3 < n-2
// i=2th pass, j<=n-4 < n-3
// function bubbleSort(arr, n) {
// for(let i=0;i<n-1;i++){
// 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;
// [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
// }
// }
// }
// return arr;
// }
// TC: O(n^2)
// SC: O(1)
// console.log(bubbleSort([5, 6, 1, 4, 8], 5))
// [5, 6, 1, 4, 8]
// n = 5
// i=0, j = 0, 1, 2, 3
// i=1, j = 0, 1, 2
// i=2, j = 0, 1
// i = 3, j = 0
function selectionSort(arr, n) {
for(let i=0;i<n-1;i++){
let min_idx = i;
for(let j=i+1;j<n;j++){
if(arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// min_idx is the index of the least element from i to n-1
[arr[min_idx], arr[i]] = [arr[i], arr[min_idx]];
}
return arr;
}
console.log(selectionSort([5, 6, 1, 8, 4], 5))
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQovLyBqIDwgbi1pLTEKLy8gaT0wdGggcGFzcywgajw9bi0yIDwgbi0xCi8vIGk9MXRoIHBhc3MsIGo8PW4tMyA8IG4tMgovLyBpPTJ0aCBwYXNzLCBqPD1uLTQgPCBuLTMKLy8gZnVuY3Rpb24gYnViYmxlU29ydChhcnIsIG4pIHsKLy8gCWZvcihsZXQgaT0wO2k8bi0xO2krKyl7Ci8vIAkJZm9yKGxldCBqPTA7ajxuLWktMTtqKyspewovLyAJCQlpZihhcnJbal0gPiBhcnJbaisxXSkgewovLyAJCQkJLy8gbGV0IHRtcCA9IGFycltqXTsKLy8gCQkJCS8vIGFycltqXSA9IGFycltqKzFdOwovLyAJCQkJLy8gYXJyW2orMV0gPSB0bXA7Ci8vIAkJCQlbYXJyW2pdLCBhcnJbaisxXV0gPSBbYXJyW2orMV0sIGFycltqXV07Ci8vIAkJCX0KLy8gCQl9Ci8vIAl9Ci8vIAlyZXR1cm4gYXJyOwovLyB9CgovLyBUQzogTyhuXjIpCi8vIFNDOiBPKDEpCgovLyBjb25zb2xlLmxvZyhidWJibGVTb3J0KFs1LCA2LCAxLCA0LCA4XSwgNSkpCgovLyBbNSwgNiwgMSwgNCwgOF0KLy8gbiA9IDUKCi8vIGk9MCwgaiA9IDAsIDEsIDIsIDMKLy8gaT0xLCBqID0gMCwgMSwgMgovLyBpPTIsIGogPSAwLCAxCi8vIGkgPSAzLCBqID0gMAoKCmZ1bmN0aW9uIHNlbGVjdGlvblNvcnQoYXJyLCBuKSB7Cglmb3IobGV0IGk9MDtpPG4tMTtpKyspewoJCWxldCBtaW5faWR4ID0gaTsKCQlmb3IobGV0IGo9aSsxO2o8bjtqKyspewoJCQlpZihhcnJbal0gPCBhcnJbbWluX2lkeF0pIHsKCQkJCW1pbl9pZHggPSBqOwoJCQl9CgkJfQoJCQoJCS8vIG1pbl9pZHggaXMgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBlbGVtZW50IGZyb20gaSB0byBuLTEKCQlbYXJyW21pbl9pZHhdLCBhcnJbaV1dID0gW2FycltpXSwgYXJyW21pbl9pZHhdXTsKCX0KCXJldHVybiBhcnI7Cn0KCmNvbnNvbGUubG9nKHNlbGVjdGlvblNvcnQoWzUsIDYsIDEsIDgsIDRdLCA1KSk=