首页 > 代码库 > 各种排序算法的js实现

各种排序算法的js实现

有些时候即便是思路再正确也总有考虑不到的地方,而经验让我们一点点填平不足。

冒泡排序:

    //大泡“浮”到右端    function bubbleSort1(arr){      var i=arr.length, j;      var temp;      while(i>0){        for(j=0;j<i-1;j++){          if(arr[j]>arr[j+1]){            temp = arr[j];            arr[j]=arr[j+1];            arr[j+1]=temp;          }        }        i--;      }      return arr;    }    //这种方式是小泡“浮”到左端     function bubbleSort2(arr) {        for (var i = 0; i < arr.length; i++) {            for (var j = arr.length; j > 0; j--) {                if (arr[j] < arr[j - 1]) {                    var temp = arr[j - 1];                    arr[j - 1] = arr[j];                    arr[j] = temp;                }            }           document.write(i+"   :"+arr+"<br/>");        }        return arr;    }

插入排序:(中间有个找了好久才找到的错误)

    function insertSort1(arr){        for (var i = 1; i < arr.length; i++) {            var key = arr[i];            for(var j=i-1;j>=0&&arr[j]>key;j--){                arr[j+1] = arr[j];                // arr[j] = key;//正确位置            }            // arr[j] = key;//错误位置            document.write(arr+"&nbsp;&nbsp;&nbsp;&nbsp;i="+i+"&nbsp;&nbsp;&nbsp;&nbsp;j="+j+"<br/>");            /*                错误位置原因:                i=1而j=0的时候不满足j循环的条件,然后往下执行到arr[j] = key;则arr[0]为6,arr[1]也是6,所以出错,而,j初始值为i的话就很好地避免了这个错误。(如第二种方法,或者放到j的for循环中)                6,6,90,2,5,11,24,1    i=1    j=0                6,90,90,2,5,11,24,1    i=2    j=1                6,6,90,90,5,11,24,1    i=3    j=-1                6,6,6,90,90,11,24,1    i=4    j=-1                6,6,11,90,90,90,24,1    i=5    j=2                6,6,24,90,90,90,90,1    i=6    j=2                6,6,6,24,90,90,90,90    i=7    j=-1            */        };        return arr;    }    /*个人推荐这种*/   function insertSort2(arr) {        for (var i = 1; i < arr.length; i++) {            var temp = arr[i];            for (var j = i; j > 0 && temp < arr[j - 1]; j--) {                arr[j] = arr[j - 1];            }            arr[j] = temp;            document.write(i+"   :"+arr+"<br/>");        }        return arr;    }

 

各种排序算法的js实现