zoukankan      html  css  js  c++  java
  • c++ 11

    data1: 12 26 37
                 i
    data2: 24 30
                 j
    data3: 12 24 26 30 37
    一、归并排序
    平均时间复杂度O(2NlogN),稳定,对数据有序性不敏感,非就地排序,不适用于对海量数据进行排序。

    二、线性查找
    1.算法:逐个比较,找到为止。
    2.评价:O(N),对数据的有序性没有要求。

    三、二分查找
    1.算法:假设数据按升序排列,取中间位置值,如果目标等于中值,则查找成功;如果目标小于中值,则在中值左侧继续查找;如果目标大于中值,则在中值右侧继续查找;直到找到或者找不到为止。
    2.评价:O(logN),数据必须有序。

    四、函数模板
    1.通用语法
    template<class/typename 类型形参1, ...>
    返回类型 模板函数名 (形参表) {
      ...
    }

    2.实例化语法
    模板函数名<类型实参1, ...> (实参表);
    如果所有的类型参数都可以根据函数实参表推断出来,那么类型实参表可以省略——隐式推断。

    3.特化语法
    template<>
    返回类型 模板函数名<类型实参1, ...> (形参表) {
      ...
    }

    五、类模板
    1.通用语法
    template<class/typename 类型形参1, ...>
    class 类模板名 { ... };

    2.实例化语法
    类模板名<类型实参1, ...> 对象名 (...);
    模板 -实例化-> 类 -实例化-> 对象
          编译期       运行期

    3.特化语法
    1)全类特化
    template<>
    class 类模板名<类型实参1, ...> { ... };
    2)成员特化
    template<>
    返回类型 类模板名<类型实参1, ...>::成员函数名 (形参表) { ... }
    练习:任选一个排序函数,将其模板化,支持对任意类型(int、string、char*、Student,...)的数组进行排序。

    六、局部特化
    1.特化程度高者优先。
    2.针对指针特化优先。
    3.参数匹配高者优先。

    七、非类型参数与缺省参数
    1.模板除了带有类型参数以外,还可以带有非类型参数(值参数),但是非类型实参必须是由常量或具有常属性的变量(不能带volatile)组成的表达式。
    2.模板的类型参数和非类型参数都可以带有缺省值,但是与函数参数的缺省值一样,必须靠右。

    八、模板型的模板参数
    用一个模板类作为另一个模板的类型参数。

  • 相关阅读:
    数据类型,线性表概念
    POJ3261:Milk Patterns——题解
    POJ1743:Musical Theme——题解
    BZOJ1031:[JSOI2007]字符加密——题解
    BZOJ1565:[NOI2009]植物大战僵尸——题解
    BZOJ1076:[SCOI2008]奖励关——题解
    BZOJ4873:[SHOI2017]寿司餐厅——题解
    BZOJ4872:[SHOI2017]分手是祝愿——题解
    BZOJ4870:[SHOI2017]组合数问题——题解
    HDU5446:Unknown Treasure——题解
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3780714.html
Copyright © 2011-2022 走看看