摘要:
1、基本思想 排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分 阅读全文
摘要:
1、定义 箱排序的变种。为了区别于上述的箱排序,姑且称它为桶排序(实际上箱排序和桶排序是同义词)。 2、基本思想 桶排序的思想是把[0,1)划分为n个大小相同的子区间,每一子区间是一个桶。然后将n个记录分配到各个桶中。因为关键字序列是均匀分布在[0,1)上的,所以一般不会有很多个记录落入同一个桶中。 阅读全文
摘要:
1、定义 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 2、两路归并算法 (1)、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂 阅读全文
摘要:
1、分类 按平均时间将排序分为四类: a、平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序; b、线性对数阶(O(nlgn))排序 如快速、堆和归并排序; c、O(n1+£)阶排序 £是介于0和1之间的常数,即0<£<1,如希尔排序; d、线性阶(O(n))排序 如桶、箱 阅读全文
摘要:
代码: Student a; s.setName("A"); //Studeng *b = new Student(); Student *b; b = new Student(); b->setName("B"); 分析: 定义类对象基本格式是:Student a;在定义之后就已经为a这个对象分配 阅读全文
摘要:
代码: class A { public: virtual void Debug(){} }; class B:public A { public: virtual void Debug(){} }; void main() { B b; A a = b; A * point_A = &b; a.D 阅读全文
摘要:
C++的重载(overload)与重写(override) 成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。 重写是指派生类函数重写基类函数,是C++的多态的表现,特征是:(1)不同的范围(分别位于派生类与基类);(2) 阅读全文
摘要:
1、为什么要引入接口? 先来看类的概念: 什么是类?类可以这么理解.类就是功能的集合.类也可以看做是实现一种功能的集合或者方法; 什么是接口?接口可以理解为,对类的规定,对类的约束,甚至对整个项目的约束。 区分概念 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是 阅读全文
摘要:
1、基本概念 malloc/free (1)、函数原型及说明 void *malloc(long NumBytes): 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针NULL。 void free(void *FirstByte): 该函数是将之前用m 阅读全文
摘要:
1、sizeof (1)sizeof()是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 (2)功能:获得保证能容纳实现所建立的最大对象的字节大小。 (3)由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间 阅读全文