精华内容
下载资源
问答
  • 准备考研的过程中,复习数据结构和算法时先看的是严蔚敏老师的《数据结构》,这本书虽然好但是对时间复杂度和算法的渐性讲解太少,读完之后对其依然没有深刻的理解,于是开始啃《算法导论》,不得不说这本书很难啃...

      准备考研的过程中,复习数据结构和算法时先看的是严蔚敏老师的《数据结构》,这本书虽然好但是对时间复杂度和算法的渐进性讲解太少,读完之后对其依然没有深刻的理解,于是开始啃《算法导论》,不得不说这本书很难啃,但是确实啃清楚了算法的时间复杂度和渐进性。这篇博客我会用到初中程度的代数知识来帮助大家彻底理解。

      我选择插入排序作为例子因为这个算法的思路足够简单,可以很容易的分析出最好情况和最坏情况。我们先来看一下插入排序的伪代码,我使用C++来书写代码,有注释:

    //插入排序的算法思路很简单,联想打扑克牌时理顺手中牌的时候,你从左往右依次检查你的牌,并将其和前面的牌进行比较,然后将其插入正确的位置
    void insertion_sort(int arr[],int length){                                        
        int key;//key作为当前你所检查的这张牌,为了方便表达我们称之为 关键牌      
        for(int i=1;i<length;i++){//从第二张牌开始,一直迭代到最后一张牌
            key = arr[i];//将本次需要排序的牌拿出,作为关键牌
            int j = i-1;//从关键牌的前一张开始往前检查,对比大小
     
            //当被对比的牌比关键牌大时,关键牌前面所有的牌都比关键牌大时,把牌往后挪动一个位置
            while(j>-1 && arr[j] > key){
                arr[j+1] = arr[j];
                j--;
            }
     
            arr[j+1] = key;//将关键插入正确的位置
        }
     }

    那么我们该如何知道,这段代码在实际执行时所花费的时间呢?当然可以上机测试,但是那样是经验论者和低端玩家干的事情,这里我们需要一些简单的数学知识和逻辑分析就能算出运行时间,我们假设,这次共排序一个长度为n的数组,那么每句代码执行所需要的时间代价和执行次数可以用下表表示:

    代码                  时间代价                执行次数

    int key                          c1                    1次
    int i=1;i<length;i++        c2                    n次
    key = arr[i]             c3                    n-1次
    int j = i-1             c4                    n-1次

    while(j>-1 && arr[j] > key)   c5   这里我们无法判断具体的执行次数,但是知道外层循环要执行n-1次,假设第i次循环中这里执行k(i)次,那么共执行k(1)+k(2)+...+k(n-1)次
    arr[j+1] = arr[j]         c6           循环内的语句总比循环数少1,于是共执行(k(1)-1)+(k(2)-1)+...+(k(n-1)-1)次
    j--;                 c7           同理,共执行(k(1)-1)+(k(2)-1)+...+(k(n-1)-1)次
    arr[j+1] = key           c8            n-1次

     

     

     

    转载于:https://www.cnblogs.com/A-dam/p/5556725.html

    展开全文
  • 你玩转Visual Studio——你管理多种释版本

    千次阅读 多人点赞 2015-10-05 14:38:06
    Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,使编译的可执行文件或库的性能最高,以便用户很好地使用。 Debug和Release本质上就是两组不同的编译选择配制,各自...

    上一篇文章带你玩转Visual Studio——带你发布自己的工程库让我们了解基本的静态库和动态库,并将自己的工程编译成库,也能在自己的工程中引入第三方库。正如上文提到的,我们在实际开发中可能会将工程释出(也叫发布)多个不同类型的版本,如即要有静态库也要有动态库,即有Debug也有Release。如何管理这些不同的释出版本就是本文要讲的内容。


    为什么要有多种释出版本

    我们每打开一个工程你都会在工具栏中看到有Debug和Release两个编译方式的选择。它们有什么区别,又为什么要有Debug和Release呢?

    Debug与Release
    图 1:Debug与Release

    Debug

    Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

    Release

    Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以使编译出的可执行文件或库的性能最高,以便用户很好地使用。

    Debug与Release的区别

    Debug和Release本质上就是两组不同的编译选择配制,各自的默认设置一般不用更改。它们最大的区别在于Release进行了优化,去掉了调试信息,因此Release常用无法进行正确的调试;而Debug没有进行优化,包含了调试信息,以方便程序员进行调试。我们可以通过比较它们的配制发现它们之间的区别:

    1. 代码编译的优化

      Debug
      Debug
      Release
      Release

    2. 使用的运行时库

      Debug
      Debug
      Release
      Release

      Debug使用的运行时库一般后面会加d,而Release的不加,关于运行时库的问题后面还会有专门章节的进行讲解。

    3. 链接的优化

      Debug
      Debug
      Release
      Release

    释出方式的配制和管理

    既然Debug或Release就一组配制,那能不能息增加一组配制呢?当然是可以的。还记得上一文带你发布自己的工程库中的例子Utils吗?既要编译静态库又要编译动态库,我们之前都是在Debug下配制的,但编译静态库与动态库切换时每次都要更改配制非常麻烦,其实我们只要为静态库与动态库添加两组两组机制,每次编译时切换一下编译项就可以了。

    1. 点击上面图1下拉列表框的Configuration Manager…或右键工程->属性->右上角的Configuration Manager…。打开Configuration Manager对话框。

    2. 在Active solution configuration下拉列表中点击New新建的一组配制。

      Configuration Manager
      Configuration Manager

    3. Copy settings from里有几个选择,Empty表示不拷贝任何配制,添加一组默认设置的配制项;Debug表示会拷贝已有的Debug这组配制中的所有设置,添加完后你再基于这个配制进行修改。一般我们会从已有的Debug或Release中拷贝然后再进行相应的修改,因为Debug或Release中有很多已经设置好的配制,这样不容易出错,而且Debug或Release也是默认的标准配制。

      New Solution Configuration
      New Solution Configuration

    4. 选择我们新添加的配制项Debug_static,右键工程->Properties进行相应的设置,这个在前面一文中已经讲过了,不再赘述。

    5. 同样的方式,我们可以增加Debug_dynamic、Release_Static、Release_Dynamic等配制项。

      新增多个配制项
      新增多个配制项



    上一篇回顾:
    带你玩转Visual Studio——带你发布自己的工程库

    下一篇要讲述的内容:
    带你玩转Visual Studio——带你多工程开发

    展开全文
  • 队时置tag为1,队时置tag为0(因为只有入队操作可能导致队满,也只有队操作可能导致队空)。队列Q初始时,置tag为0、front=rear=0。 入队算法: int EnQueue(SqQueue &Q,ElemType x){ if(Q.front==Q....

    若希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区别头指针front和尾指针rear相同时队列状态是“空”还是“满”。

    进队时置tag为1,出队时置tag为0(因为只有入队操作可能导致队满,也只有出队操作可能导致队空)。队列Q初始时,置tag为0、front=rear=0。

    入队算法:

    int EnQueue(SqQueue &Q,ElemType x){
    	if(Q.front==Q.rear&&Q.tag==1) return 0;//队满
    	Q.data[Q.rear]=x;
    	Q.rear=(Q.rear+1)%MaxSize;
    	Q.tag=1;
    	return 1;
    } 

    出队算法:

    int DeQueue(SqQueue &Q,ElemType &x){
    	if(Q.front==Q.rear&&Q.tag==0) return 0;//队空
    	x=Q.data[Q.front];
    	Q.front=(Q.front+1)%MaxSize;
    	Q.tag=0;
    	return 1; 
    }

     

    展开全文
  • 深入浅,能让读者最少的时间成本代价获得嵌入式底层软件开发的技术精髓。 深入浅嵌入式底层软件开发适合硬件工程师、软件工程师、嵌入式软件的从业人员、教授嵌入式软件开发课程的老师、意欲从事嵌入式软件...
  • 通过对充气钻技术的适用性改进,根据地层压力系数计算最优充气量和液量,并调整好液/气量比,在有效解决井口失返问题的同时保证了正常钻效;间断性清水强钻将地层水回注,解决了地下水浪费和污染问题;采用压钻...
  • 第十三章,讨论MFC工具栏和状态栏的设计及其实现,分析MFC是如何CControlBar为基础,派生CStatusBar、CToolBar、CDialogBar等子类,实现MFC工具栏和状态栏标准处理。 第十四章,讨论MFC的Socket类。 第一章到...
  • 针对董家河煤矿5号煤层开采引起的底板采动破坏深度开展相关研究,该矿的507综采工作面开采为工程背景,采用理论分析和数值模拟相结合的办法,动态再现了整个底板岩层渐破坏过程,并得出底板岩层的最大破坏深度为10-...
  • 整理出来,供借鉴。 废话不多说,直接来解决问题。 踩坑问题描述: 问题一: 获取到后端返回的数组,并将数组传入作为 results 传入 callback 后,焦点放在 输入框 上的时候,并未出现任何内容,只出现了一个不...
  • 前段时间,在实现输入建议并且支持模糊查询输入框的时候,发现了两个值得注意的小地方。整理出来,供借鉴。废话不多说,直接来解决问题。踩坑问题描述:问题一:获取到后端返回的数组,并将数组传入作为 results...

    前段时间,在实现带输入建议并且支持模糊查询输入框的时候,发现了两个值得注意的小地方。整理出来,以供借鉴。

    废话不多说,直接来解决问题。

    踩坑问题描述:

    问题一:

    获取到后端返回的数组,并将数组传入作为 results 传入 callback 后,焦点放在 输入框 上的时候,并未出现任何内容,只出现了一个不完整的空白框。

    问题解决方案:

    这个问题开始我以为是传进 callback 的 data 格式不对。Element官网上是这么写的:

    我传入的是对象数组,是没问题的。

    后来我仔细阅读了 Elemen t带建议查询输入框的 Demo 代码并查阅相关资料发现,输入建议列表的数据只来源于

    data:[] 中的 value 字段!!!

    于是,我将后端传回的 response 处理了,将 response 中需要展示的字段组成 {value:'输入建议'} 这种格式,问题解决。

    searchAppNodeApi(searchQuery).then((response) => {

    this.loadAll = response.data

    this.devEuiArr = [];

    for (var i = 0; i < this.loadAll.length; i++) {

    this.devEuiArr.push({"value1": this.loadAll[i].dev_eui})

    }

    })

    searchAppNodeApi() 是我请求后端的api方法,拿到请求成功的回调函数的 response 参数。但是, response 里面包含很多我不需要的字段,我只需要其中的 dev_eui 字段。因此,循环 response.data 将其中每条的 dev_eui 重组成 {value:'输入建议'} 的格式并 push 进声明的新数组 devEuiArr。

    打印如下:

    正确效果如下:

    问题二:

    成功出现输入建议列表后,出现一个新的问题,并且 Element 官网的 Demo 代码并未阐述这种情况,就是当我获取到输入建议列表后,切换成另一个输入建议列表,会先闪一下上一个出现的输入建议列表,切换后的输入列表为空也会闪出上个输入建议列表,就算手动清空 callback(data:[]) 中的 data 数组也无济于事。

    问题解决方案:

    这个问题开始我以为是需要返回数据后手动清空 callback 里面的 data 数组,像下面这样:

    //联想查询时触发

    querySearch(queryString, callback) {

    var results = queryString ? this.devEuiArr.filter(this.createFilter(queryString)) : this.devEuiArr

    // 调用 callback 返回建议列表的数据

    callback(results)

    results = ''

    }

    但是一点作用没起,也就是跟变量缓存没什么关系,后来我在 Element 官网的一个小角落发现这么一个参数:

    debounce ? 函数去抖 ? 应该就是它了!

    (PS:不了解函数去抖和函数节流的同学可以阅读我的下一篇博文。)

    debounce 的默认值是 300ms,我们将其设置为 0ms。

    placeholder="请输入DEVEUI"

    v-model="searchDeveuiVal"

    clearable

    :fetch-suggestions="querySearch"

    size="small"

    :debounce=0

    @keyup.enter.native="searchAppNode">

    正确效果如下:

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 作为新丝绸之路的一部分的长江经济和淮海经济区,是江苏建设雷士照明的两个重要延伸空间。 最后,在对出口增加值进行分解的基础上,对江苏省16个主要制造业具有比较优势的产业进行了评估。 揭示了江苏工业价值链...
  • 2、填入批次后会自动带出该批次的产品信息,如名称、品牌、规格等 三、调拨操作: 《货位转移》:记录产品在不同仓位间转移的情况。 1、填入批次、新仓位、日期即可,会自动更改“进出存”表中对应批次的仓位。 四...
  • EXCEL批次管理销存台账v11.5.16

    热门讨论 2011-05-16 11:49:43
    2、填入批次后会自动带出该批次的产品信息,如名称、品牌、规格等 三、调拨操作: 《货位转移》:记录产品在不同仓位间转移的情况。 1、填入批次、新仓位、日期即可,会自动更改“进出存”表中对应批次的仓位。 四...
  • 本文盛泰煤矿15101工作面为研究对象,主要通过现场实测对综采工作面的采空区水平"三"进行研究,通过温度划分水平"三",最终得出:采空区风侧37~75 m、回风侧27~56 m为氧化;采空区风侧75 m、回风56 m里为...
  • 在本实例以及接下来的实例中,我们将采取循序渐的方式分步讨论涉及到Android程序设计的方方面面,例子的方式来展示如何设计以及开发Android应用;本实例介绍的将是资源文件的设计以及代码关联,并且附带画面跳转...
  • 新 的 B-样 条 二 小 波 作 为 初 始 二 小 波 滤波 器 , 结 合 二 维t r o u s算 法 对原 始 医 学 图 像 行 多 层 分 解., 根 据 分 解 后 系 数 特 点 ,.一.方 面 对 不 同 级 数 的 高 频...
  • 为解决通过丢弃钻头或钻穿钻头方法进行贯通或后续施钻的套管钻井工艺存在的问题,设计一种可提式扩孔钻头,配小直径全断面钻头形成两级切削机构,穿越破碎后从套管内提出切削机构,使后续深孔钻作业得以继续。...
  • Opera具有一项名为FastForward的简洁功能,它可以检测页面上的“下一个”链接,并允许您使用空格键不仅向下滚动,而且在单击页面底部时,它会自动前进到下一页连续释放鼠标读。此扩展为Chrome浏览器带来了与歌剧...
  • 速用销存财务软件破解注册版

    热门讨论 2012-10-21 18:11:33
     速用销存的销售管理功能客户管理为轴心,通过点击客户进行销售出货开单,销售退货开单,财务收入开单,财务支出开单等操作,软件里还提供有销售概况分析和销售记录明细的报表功能,让用户对企业销售状况...
  • 一条110kV线 有功-22MW,无功-3Mvar Ia 150A CT600/5二次侧A相电压Ua为基准电压测得:Ia 1.2A 滞后基准电压188度 Ib 1.22A 滞后基准电压307度 Ic 1.21A 滞后基准电压68度结论:CT变比正确、相位正确、极性正确我...
  • Cortex-M4和Cortex-M3内核的systick不...这里给一种systick不中断的延时方法,精度比一般软件延时高,且不会占用内核的大量运算资源。 其中Cortex-M3默认选择HCLK的8分频作为SysTick系统定时器的时钟源 Cortex-M4
  • 针对邯邢矿区煤层开采受奥灰承压水威胁及保水开采的现状,提出了区域超前治理防治水技术,超前主动、区域治理、全面改造、压开采为指导原则,该技术在邯邢矿区奥灰含水层顶部区域超前注浆改造中进行应用,孔口终压...
  • 所谓全贴合,即均匀填充的方式,用光学级水胶将玻璃盖板与显示面板贴合,构造无空气夹层的高规格显示器件。相较于触摸屏早期采用的传统框贴工艺,这一工艺消除了空气层,隔绝了灰尘进入的途径,有效减少...
  • 最近在做项目的时候遇到一个...最后通过查阅资料发现,当要把数据拿出来的时候需要设置拿数据附带主键属性(不知道这么说跟时间原理是不是有偏差),具体步骤记录如下,备后续参考: using (SqlConnection c...
  • 跨境电商形式进口的商品表现批次多、品种杂、来源广、收货人众多、涉及面广等特点。同时,我国进口跨境电商主要食品、保健品、化妆品、婴幼儿用品等高风险产品为主,进口正品、仿品高额利益差的诱惑,导致跨境...
  • 1.支持报价、订单、入库单模块页的显示模式下,使用弹窗选择商品 2.支持报价、订单、入库、收付单模块使用弹窗选择往来单位资料 3.暂停在单据模块中下拉选择往来单位的方式 4.针对收付款模块中字段的只读属性...
  • 近日,第三届中国国际进口博览会在上海落下帷幕。此届博会“新时代 共享未来”为永恒...此次博会相对前两届规模更大,展区更多,后疫情特殊时期,展馆整体限流入口多,众多参展人员着口罩,携带产品品种繁...
  • 1.本表由VBA编码制作而成,用户使用本模板时需启动宏,工作表中有公式的单元格不要去更改,本工作簿需要用户将基础信息录入进来,方便入库单和出库单的信息录入。 2.入库单,出库单,退货单中供应商和客户的信息都...
  • 有DjangoRestFramework + TokenAuthentication + ContentManagerWeb的API Rest的基础 URL DOCS邮递员: 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,进行开发和测试。 有关如何在实时系统上...
  • java 8实战 清晰书签

    2019-02-11 10:01:14
    本书会帮助你跨过“原理听起来不错,但还是有点儿新,不太适应”的门槛,从而熟练地 行编程。 “也许吧,”你可能会想,“可是Lambda、函数式编程,这些不是那些留着胡子、穿着凉鞋的 学究们在象牙塔里面琢磨的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 618
精华内容 247
关键字:

以进带出