// your code goes here
function bubbleSort(arr, n) {
for(let i=0;i<n-1;i++) { // i is the iteration number
for(let j=0;j<n-1-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;
}
// console.log(bubbleSort([5, 3, 4, 2, 1], 5));
// TC: o(n^2)
// SC: O(1)
// j, j+1
// j <= n-2
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;
}
}
let tmp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = tmp;
// [arr[i], arr[min_idx]] = [arr[min_idx], arr[i]];
}
return arr;
}
console.log(selectionSort([5, 3, 4, 2, 1], 5));
Ly8geW91ciBjb2RlIGdvZXMgaGVyZQoKZnVuY3Rpb24gYnViYmxlU29ydChhcnIsIG4pIHsKCQoJZm9yKGxldCBpPTA7aTxuLTE7aSsrKSB7IC8vIGkgaXMgdGhlIGl0ZXJhdGlvbiBudW1iZXIKCQlmb3IobGV0IGo9MDtqPG4tMS1pO2orKykgewoJCQlpZihhcnJbal0+YXJyW2orMV0pIHsKCQkJCWxldCB0bXAgPSBhcnJbal07CgkJCQlhcnJbal0gPSBhcnJbaisxXTsKCQkJCWFycltqKzFdID0gdG1wOwoJCQkJCgkJCQkvLyBbYXJyW2pdLCBhcnJbaisxXV0gPSBbYXJyW2orMV0sIGFycltqXV07CgkJCX0KCQl9Cgl9CglyZXR1cm4gYXJyOwp9CgovLyBjb25zb2xlLmxvZyhidWJibGVTb3J0KFs1LCAzLCA0LCAyLCAxXSwgNSkpOwoKLy8gVEM6IG8obl4yKQovLyBTQzogTygxKQovLyBqLCBqKzEKCi8vIGogPD0gbi0yCgoKZnVuY3Rpb24gc2VsZWN0aW9uU29ydChhcnIsIG4pIHsKCWZvcihsZXQgaT0wO2k8bi0xO2krKykgewoJCWxldCBtaW5faWR4ID0gaTsKCQlmb3IobGV0IGo9aSsxO2o8bjtqKyspIHsKCQkJaWYoYXJyW2pdPGFyclttaW5faWR4XSkgewoJCQkJbWluX2lkeCA9IGo7CgkJCX0KCQl9CgkJbGV0IHRtcCA9IGFycltpXTsKCQlhcnJbaV0gPSBhcnJbbWluX2lkeF07CgkJYXJyW21pbl9pZHhdID0gdG1wOwoJCQoJCS8vIFthcnJbaV0sIGFyclttaW5faWR4XV0gPSBbYXJyW21pbl9pZHhdLCBhcnJbaV1dOwoJfQoJcmV0dXJuIGFycjsKfQoKY29uc29sZS5sb2coc2VsZWN0aW9uU29ydChbNSwgMywgNCwgMiwgMV0sIDUpKTs=