码迷,mamicode.com
首页 > 编程语言 > 详细

各种排序算法的js实现

时间:2014-11-11 18:31:42      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   sp   for   strong   div   

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

冒泡排序:

    //大泡“浮”到右端
    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实现

标签:style   blog   io   color   ar   sp   for   strong   div   

原文地址:http://www.cnblogs.com/bjchenxn/p/4090056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!