1. 算法总览
常见的排序算法有插入排序、选择排序、希尔排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。常见排序算法可以分为两大类:
- 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破
O(nlogn),因此称为非线性时间比较类排序。 - 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。排序算法的时间复杂度如下:

常见的排序算法有插入排序、选择排序、希尔排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。常见排序算法可以分为两大类:
O(nlogn),因此称为非线性时间比较类排序。
make是一个命令,是管理文件的自动编译管理器,这里的自动是指能根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时通过读取makefile的文件的内容来进行预期的编译工作,make将只编译有改动的文件,而不用完全编译。
shell是Linux系统中运行的一种特殊程序。在用户和内核之间之间充当“翻译官”,用户登陆Linux系统时,自动加载一个Shell程序,Bash是Linux系统中默认使用的Shell程序。

1 | 1、打开终端:Ctr+Alt+T |
vector、list、deque、set、map等,用来存放数据sort、find、copy、for_each、search、erase六大组件的交互关系是Container通过Allocator获得数据存储空间,Alogrithm通过Iterator存取Container的内容,Functor可以协助Algorithm完成不同的策略变化,Adapter可以修饰或套接Functor。本笔记将会以此对这六大组件进行介绍。
++说在前面:STL的实现版本由HP版本、PJ版本、RW版本、STLport版本和SGISTL版本等五个主要版本++
c++支持两种类--抽象类和具体类。一个抽象类包含着没有实现代码的成员函数(纯虚函数)。具体了类没有纯虚函数。只有具体类才可以实例化(但抽象类实例化指针和引用是运行的),即只能对具体类建立实例或对象。
在这里主要讲解各种数据结构的思想,列举抽象类接口和实现一部分具体类的接口功能。
面向对象程序设计的核心思想是数据抽象、继承和动态绑定。通过数据抽象,我们可以将类的接口与实现相分离;使用继承。可以使用相似的类型对其关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别。
virtual使得函数执行动态绑定。其只能出现在类内部声明或定义中。protected(派生类有权访问,禁止用户访问)基本内置类型有算术类型和空类型。算术类型分两类为整型和浮点型,下图显示了C++的算数类型:

c++有几种复合类型:数组、结构、string、引用和指针。这里讨论引用和指针。
相比于c++,python中的OOP理解和使用都较简单,其把隐藏的的语法杂质和复杂性都去掉了。
## 1.1 类对象提供的默认行为
在python的面向对象模型种,要分清类对象和实例对象。类对象就是class定义了一个类只会,该类提供些行为就是类对象.而实例对象就是该类的实例。每次调用类,就会生成一个实例。
类对象提供的默认行为:
class语句创建类对象并将其赋值给变量名。就像def一样,class语句也是可执行语句,执行时会产生类对象,并赋值变量名def内)会成为类对象的属性。class执行时,只是赋值语句而已,赋值了一个类对象
当程序运行时,Python内部会将源代码(.py文件中的程序)编译成所谓的字节码的形式,就是将每一行源代码语句从上到下翻译过来,翻译成一组字节码的指令.这些字节码可以提高执行速度;比起源代码语句,字节码要执行快的多。