插入排序


        var insertionSort = function(array){

          //一开始,第一个元素就被认为已排好序了

          //以i为分割,小于i的为排好序的,大于或等于i的部分为待排序的

          for(var i = 1,n = array.length;i < n;i++){

            var tmp = array[i],//取出第一个待排序的元素(比较元素)

            j = i

            while(array[j-1]>tmp){//从后往前遍历排好序的部分

              array[j] = array[j-1];//如果该元素大于比较元素,则把此元素往后挪一下

              j--;

              if(j<=0)break;

            }



            array[j] = tmp;//插入比较元素

          }

           return array;

        }

实现过程

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素(下称比较元素),在已经排序的元素序列中从后向前扫描
  3. 如果该元素大于比较元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于比较元素的位置
  5. 将比较元素插入到该位置中
  6. 重复步骤2
插入排序


        var insertionSort = function(array){

          var j, i, tmp,n=array.length;

          for (i=1; i<n; i++, j=i) {

            tmp=array[i];

            while(true)

              if (j-- >= 0 && array[j] > tmp)

                array[j+1]=array[j];

            else

              break;

            array[j+1]=tmp;

          }

          return array;

        }

你可能感兴趣的:(插入排序)