zoukankan      html  css  js  c++  java
  • 插入排序

            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;
            }
    
  • 相关阅读:
    Ruby 2
    Ruby 1
    莱布尼兹:与牛顿争吵了一生的斗士 微积分的奠基人之一―莱布尼茨
    如何实现html页面自动刷新
    css z-index的层级关系
    让网页变灰的实现_网站蒙灰CSS样式总汇
    利用CSS变量实现炫酷的悬浮效果
    离线电商数仓(十四)之系统业务数据仓库数据采集(一)电商业务简介
    离线电商数仓(十三)之用户行为数据采集(十三)采集通道启动/停止脚本
    离线电商数仓(十)之用户行为数据采集(十)组件安装(六)采集日志Flume(二)消费Kafka数据Flume
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1650738.html
Copyright © 2011-2022 走看看