function newsort(arr, left, right){
for(var i= left; i < right; ++i){
var min = i;
for (var j = i; j < right; ++j){
if (arr[min] > arr[
var selectionSort = function(array){
for(var i = 0; i < array.length; i++){
//set min to the current iteration of i
var min = i;
for(var j = i+1; j < array.length; j++){
if(array[j] < array[min]){
min = j;
}
}
var temp = array[i];
array[i] = array[min];
array[min] = temp;
}
return array;
};
var array = [3,2,10,1]
console.log('selectionSort should return [1,2,3,10]-->',selectionSort(array));
It might be easier to reason with if you use a helper swap function:
//HELPER FUNCTION
var swap = function(array, firstIndex, secondIndex){
var temp = array[firstIndex];
array[firstIndex] = array[secondIndex];
array[secondIndex] = temp;
};
var array = [2,1];
swap(array, 0, 1)
console.log('swap should return [1,2] -->', array);
var selectionSort = function(array){
for(var i = 0; i < array.length; i++){
//set min to the current iteration of i
var min = i;
for(var j = i+1; j < array.length; j++){
if(array[j] < array[min]){
min = j;
}
}
swap(array, i, min);
}
return array;
};
var array = [3,2,10,1]
console.log('selectionSort should return [1,2,3,10]-->',selectionSort(array));
Visual of selection sort:
[3,1,2]
|-----> iterate over list. find that min = 1 so we swap current i (3) with min(1)
[1,3,2]
|---> iterate over list. find that min = 2 so we swap current i (3) with min(2)
[1,2,3]
|---> iterate over list. find that min = 3 so we swap current i (3) with min(3)