Selection Sort in JavaScript

前端 未结 6 1064
轮回少年
轮回少年 2020-12-18 11:05
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[         


        
6条回答
  •  不思量自难忘°
    2020-12-18 11:38

    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)
    

提交回复
热议问题