const selectionSort = arr => { let len = arr.length, temp, min; for (let i = 0; i < len - 1; i++) { min = i; for (let j = i + 1; j < len; j++) { if (arr[j] < arr[i]) { min = j; } } if (i !== min) { temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } return arr; };
const bubbleSort = arr => { let temp; for (let i = arr.length - 1; i > 0; i--) { for (let j = 1; j <= i; j++) { if (arr[j - 1] > arr[j]) { temp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = temp; } } console.log(arr); } return arr; };
const insertSort = arr => { let temp; for (let i = 1; i < arr.length; i++) { for (let j = i; j >= 1; j--) { if (arr[j] < arr[j - 1]) { temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } else { break; } } console.log(i, arr); } return arr; };
const quickSort1 = arr => { if (arr.length <=1) return arr; const tempIndex = Math.floor(arr.length/2); const tempValue = arr.splice(tempIndex, 1)[0]; const left = []; const right = []; arr.forEach(i => { if (i<= tempValue) { left.push(i); } else { right.push(i); } }); return f(left).concat([tempValue], f(right)); } const quickSort2 = (arr, left = 0, right = arr.length - 1) => { if (left >= right) return; let i = left let j = right const baseVal = arr[j]; while (i < j) { while (i < j && arr[i] <= baseVal) { i++ } arr[j] = arr[i]; while (j > i && arr[j] >= baseVal) { j-- } arr[i] = arr[j]; } arr[j] = baseVal; sort(arr, left, j - 1); sort(arr, j + 1, right); }
const shellSort = arr => { let k = Math.floor(arr.length/2); while(k > 0) { for (let i = k; i < arr.length; i++) { let num = i; while(num - k >=0 && arr[num]< arr[num - k]) { temp = arr[num]; arr[num] = arr[num - k]; arr[num - k] = temp; num = num - k; } } k = Math.floor(k/2); } return arr; }