Fixed formatting problems, example and JSDoc (#129)
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
// Selection Sort - O(n^2)
|
/**
|
||||||
// Parameter:
|
* Finds the index of the element with the smallest value in the array
|
||||||
// 1. random array
|
* @param {Array} array Source array
|
||||||
|
* @returns {number} Index of the element with the smallest value
|
||||||
// 1. Finds the smallest value in an array
|
*/
|
||||||
const findSmallestIndex = (array) => {
|
const findSmallestIndex = (array) => {
|
||||||
let smallestElement = array[0]; // Stores the smallest value
|
let smallestElement = array[0]; // Stores the smallest value
|
||||||
let smallestIndex = 0; // Stores the index of the smallest value
|
let smallestIndex = 0; // Stores the index of the smallest value
|
||||||
@@ -17,23 +17,27 @@ const findSmallestIndex = (array) => {
|
|||||||
return smallestIndex;
|
return smallestIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 2. Sorts the array
|
/**
|
||||||
|
* Sort array by increment
|
||||||
|
* @param {Array} array Source array
|
||||||
|
* @returns {Array} New sorted array
|
||||||
|
*/
|
||||||
const selectionSort = (array) => {
|
const selectionSort = (array) => {
|
||||||
//Copy values from array, because it must be immutable. Without that after call selectionSort origin array will become empty.
|
|
||||||
const sortingArray = [...array];
|
|
||||||
const sortedArray = [];
|
const sortedArray = [];
|
||||||
const length = sortingArray.length;
|
const copyArray = [...array];
|
||||||
|
|
||||||
for (let i = 0; i < length; i++) {
|
for (let i = 0; i < array.length; i++) {
|
||||||
// Finds the smallest element in the given array
|
// Finds the smallest element in the array
|
||||||
const smallestIndex = findSmallestIndex(sortingArray);
|
const smallestIndex = findSmallestIndex(copyArray);
|
||||||
// Adds the smallest element to new array
|
// Adds the smallest element to new array
|
||||||
sortedArray.push(sortingArray.splice(smallestIndex, 1)[0]);
|
sortedArray.push(copyArray.splice(smallestIndex, 1)[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sortedArray;
|
return sortedArray;
|
||||||
};
|
};
|
||||||
|
|
||||||
const array = [5, 3, 6, 2, 10];
|
const sourceArray = [5, 3, 6, 2, 10];
|
||||||
console.log(selectionSort(array)); // [2, 3, 5, 6, 10]
|
const sourtedArray = selectionSort([5, 3, 6, 2, 10]);
|
||||||
console.log(array); // [5, 3, 6, 2, 10]
|
|
||||||
|
console.log("Source array - ", sourceArray); // [5, 3, 6, 2, 10]
|
||||||
|
console.log("New sorted array - ", sourtedArray); // [2, 3, 5, 6, 10]
|
||||||
|
|||||||
36
02_selection_sort/ES6/02_recursive_selection_sort.js
Normal file
36
02_selection_sort/ES6/02_recursive_selection_sort.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* Finds the index of the element with the smallest value in the array
|
||||||
|
* @param {Array} array Source array
|
||||||
|
* @returns {number} Index of the element with the smallest value
|
||||||
|
*/
|
||||||
|
const findSmallestIndex = array => {
|
||||||
|
let smallestElement = array[0]; // Stores the smallest value
|
||||||
|
let smallestIndex = 0; // Stores the index of the smallest value
|
||||||
|
|
||||||
|
for (let i = 1; i < array.length; i++) {
|
||||||
|
if (array[i] < smallestElement) {
|
||||||
|
smallestElement = array[i];
|
||||||
|
smallestIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return smallestIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort array by increment
|
||||||
|
* @param {Array} array Source array
|
||||||
|
* @returns {Array} New sorted array
|
||||||
|
*/
|
||||||
|
const selectionSort = array => {
|
||||||
|
if (!array.length) return [];
|
||||||
|
const copyArray = [...array];
|
||||||
|
const smallest = copyArray.splice(findSmallestIndex(copyArray), 1);
|
||||||
|
return smallest.concat(selectionSort(copyArray));
|
||||||
|
};
|
||||||
|
|
||||||
|
const sourceArray = [5, 3, 6, 2, 10];
|
||||||
|
const sourtedArray = selectionSort([5, 3, 6, 2, 10]);
|
||||||
|
|
||||||
|
console.log("Source array - ", sourceArray); // [5, 3, 6, 2, 10]
|
||||||
|
console.log("New sorted array - ", sourtedArray); // [2, 3, 5, 6, 10]
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
'use strict';
|
"use strict";
|
||||||
// Selection Sort - O(n^2)
|
|
||||||
// Parameter:
|
|
||||||
// 1. random array
|
|
||||||
|
|
||||||
// 1. Finds the smallest value in an array
|
/**
|
||||||
|
* Finds the index of the element with the smallest value in the array
|
||||||
|
* @param {Array} array Source array
|
||||||
|
* @returns {number} Index of the element with the smallest value
|
||||||
|
*/
|
||||||
function findSmallestIndex(array) {
|
function findSmallestIndex(array) {
|
||||||
var smallestElement = array[0]; // Stores the smallest value
|
var smallestElement = array[0]; // Stores the smallest value
|
||||||
var smallestIndex = 0; // Stores the index of the smallest value
|
var smallestIndex = 0; // Stores the index of the smallest value
|
||||||
@@ -18,19 +19,28 @@ function findSmallestIndex(array) {
|
|||||||
return smallestIndex;
|
return smallestIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Sort the array
|
/**
|
||||||
|
* Sort array by increment
|
||||||
|
* @param {Array} array Source array
|
||||||
|
* @returns {Array} New sorted array
|
||||||
|
*/
|
||||||
function selectionSort(array) {
|
function selectionSort(array) {
|
||||||
var sortedArray = [];
|
var sortedArray = [];
|
||||||
|
var copyArray = array.slice();
|
||||||
var length = array.length;
|
var length = array.length;
|
||||||
|
|
||||||
for (var i = 0; i < length; i++) {
|
for (var i = 0; i < length; i++) {
|
||||||
// Finds the smallest element in the array
|
// Finds the smallest element in the array
|
||||||
var smallestIndex = findSmallestIndex(array);
|
var smallestIndex = findSmallestIndex(copyArray);
|
||||||
// Adds the smallest element to new array
|
// Adds the smallest element to new array
|
||||||
sortedArray.push(array.splice(smallestIndex, 1)[0]);
|
sortedArray.push(copyArray.splice(smallestIndex, 1)[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sortedArray;
|
return sortedArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(selectionSort([5, 3, 6, 2, 10])); // [2, 3, 5, 6, 10]
|
const sourceArray = [5, 3, 6, 2, 10];
|
||||||
|
const sourtedArray = selectionSort([5, 3, 6, 2, 10]);
|
||||||
|
|
||||||
|
console.log("Source array - ", sourceArray); // [5, 3, 6, 2, 10]
|
||||||
|
console.log("New sorted array - ", sourtedArray); // [2, 3, 5, 6, 10]
|
||||||
|
|||||||
Reference in New Issue
Block a user