// your code goes here
// n=5,
// [4, 2, 3, 1, 6]
// i=0, (6, 4), (6, 2), (6, 3), (6, 1)
// (0, 1) (1, 2), (2, 3), (3, 4),
// i=0, j = 0, 1, 2, 3 < n-1-0
// < n-1-1
// <
// function bubbleSort(arr, n) {
// for(let i=0;i<n-1;i++){
// for(let j=0;j<=n-2-i;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([6, 4, 2, 3, 1], 5))
// SELECTION SORT
// n=5, arr = [6, 4, 2, 3, 1]
// i=0, what's the idx of the mimimum element from 0 to 4? 4 swap(arr[0], arr[4])
// [1, 4, 2, 3, 6]
// i=1, what's the idx of the minimum element from 1 to 4? 2 swap(arr[1], arr[2])
// [1, 2, 4, 3, 6]
// i=2, what's the idx of the mimimum element from 2 to 4? 3 swap(arr[2], arr[3])
// [1, 2, 3, 4, 6]
// i=3, what'as the idx of the minimum element from 3 to 4? 3 swap(arr[3], arr[3])
function selectionSort(arr, n) {
for(let i=0;i<n-1;i++) {
// find the idx of the mimimum element from i to n-1
let min_idx = i;
for(let j=i;j<n;j++){
if(arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// swap arr[min_idx] with arr[i]
let tmp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = tmp;
}
return arr;
}
console.log(selectionSort([6, 4, 3, 2, 1], 5))
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQoKLy8gbj01LAovLyBbNCwgMiwgMywgMSwgNl0KCi8vIGk9MCwgKDYsIDQpLCAoNiwgMiksICg2LCAzKSwgKDYsIDEpCgoKCi8vICgwLCAxKSAoMSwgMiksICgyLCAzKSwgKDMsIDQpLAoKLy8gaT0wLCBqID0gMCwgMSwgMiwgMyA8IG4tMS0wCi8vICAgICAgICAgICAgICAgICAgICAgIDwgbi0xLTEKLy8gICAgICAgICAgICAgICAgICAgICAgPCAKCi8vIGZ1bmN0aW9uIGJ1YmJsZVNvcnQoYXJyLCBuKSB7Ci8vIAlmb3IobGV0IGk9MDtpPG4tMTtpKyspewovLyAJCWZvcihsZXQgaj0wO2o8PW4tMi1pO2orKyl7Ci8vIAkJCWlmKGFycltqXTxhcnJbaisxXSkgewovLyAJCQkJbGV0IHRtcCA9IGFycltqXTsKLy8gCQkJCWFycltqXSA9IGFycltqKzFdOwovLyAJCQkJYXJyW2orMV0gPSB0bXA7Ci8vIAkJCQkvLyBbYXJyW2pdLCBhcnJbaisxXV0gPSBbYXJyW2orMV0sIGFycltqXV07Ci8vIAkJCX0KLy8gCQl9Ci8vIAl9Ci8vIAlyZXR1cm4gYXJyOwovLyB9CgovLyBUQzogTyhuXjIpCi8vIFNDOiBPKDEpCgoKLy8gY29uc29sZS5sb2coYnViYmxlU29ydChbNiwgNCwgMiwgMywgMV0sIDUpKQoKCi8vIFNFTEVDVElPTiBTT1JUCgovLyBuPTUsIGFyciA9IFs2LCA0LCAyLCAzLCAxXQoKCi8vIGk9MCwgd2hhdCdzIHRoZSBpZHggb2YgdGhlIG1pbWltdW0gZWxlbWVudCBmcm9tIDAgdG8gND8gNCBzd2FwKGFyclswXSwgYXJyWzRdKQoKLy8gWzEsIDQsIDIsIDMsIDZdCgovLyBpPTEsIHdoYXQncyB0aGUgaWR4IG9mIHRoZSBtaW5pbXVtIGVsZW1lbnQgZnJvbSAxIHRvIDQ/IDIgc3dhcChhcnJbMV0sIGFyclsyXSkKCi8vIFsxLCAyLCA0LCAzLCA2XQoKLy8gaT0yLCB3aGF0J3MgdGhlIGlkeCBvZiB0aGUgbWltaW11bSBlbGVtZW50IGZyb20gMiB0byA0PyAzIHN3YXAoYXJyWzJdLCBhcnJbM10pCgovLyBbMSwgMiwgMywgNCwgNl0KCi8vIGk9Mywgd2hhdCdhcyB0aGUgaWR4IG9mIHRoZSBtaW5pbXVtIGVsZW1lbnQgZnJvbSAzIHRvIDQ/IDMgc3dhcChhcnJbM10sIGFyclszXSkKCgpmdW5jdGlvbiBzZWxlY3Rpb25Tb3J0KGFyciwgbikgewoJZm9yKGxldCBpPTA7aTxuLTE7aSsrKSB7CgkJLy8gZmluZCB0aGUgaWR4IG9mIHRoZSBtaW1pbXVtIGVsZW1lbnQgZnJvbSBpIHRvIG4tMQoJCWxldCBtaW5faWR4ID0gaTsKCQkKCQlmb3IobGV0IGo9aTtqPG47aisrKXsKCQkJaWYoYXJyW2pdIDwgYXJyW21pbl9pZHhdKSB7CgkJCQltaW5faWR4ID0gajsKCQkJfQoJCX0KCQkvLyBzd2FwIGFyclttaW5faWR4XSB3aXRoIGFycltpXQoJCWxldCB0bXAgPSBhcnJbbWluX2lkeF07CgkJYXJyW21pbl9pZHhdID0gYXJyW2ldOwoJCWFycltpXSA9IHRtcDsKCX0KCXJldHVybiBhcnI7Cn0KCmNvbnNvbGUubG9nKHNlbGVjdGlvblNvcnQoWzYsIDQsIDMsIDIsIDFdLCA1KSk=