基础知识
gavin710
这个作者很懒,什么都没留下…
展开
-
希尔排序总结
希尔排序Shell Sort是插入排序的一种改进:在希尔排序中,有一个量叫做关键字(我理解为步长):step,这个关键字将待排序的数组分为step组,每组为至多arrayLen/step+1个元素(可能不能整除,那么钱array%step多一个元素),对每组的元素进行插入排序,减小step知道step为1。希尔排序的时间复杂度为:O(nlog(n))举例:准备待排数组[6 2 4 1 5原创 2012-03-23 01:39:56 · 617 阅读 · 0 评论 -
快速排序
快速排序(Quick Sort):快速排序是对冒泡排序的一种改进。它的基本思想是通过一趟排序,将排序记录分割中两个部分,其中一部分记录的关键字比另一部分关键字都要小,再分别对两部分记录进行排序,已达到整个序列有序的目的。快排中用到了递归的思想,在分割出两部分以后对每一部分在进行快排,直到分割到每一部分只有一个记录为止。示例:有记录 49 38 65 97 76 13 27,我们选择第一个记录作原创 2012-03-24 20:17:37 · 1006 阅读 · 0 评论 -
类型转换static_cast dynamic_cast const_cast reinterpret_cast
C 风格(C-style)强制转型如下: (T) exdivssion // cast exdivssion to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种转载 2012-03-19 21:52:29 · 443 阅读 · 0 评论 -
const成员函数
一些成员函数改变对象,一些成员函数不改变对象。例如: int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: void Point:: SetPt (int x, int y){ xVal=x; yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对象的转载 2012-03-16 01:27:37 · 453 阅读 · 0 评论 -
C++函数重载
函数重载(overloaded function):在相同的作用域中的两个函数,如果有相同的名字而形参表不同注意:如果仅仅函数的返回值不同是不能实现函数重载void func(int);int func(int);//error,仅仅返回值不同是不能作为函数重载,这属于函数重定义形参表包括:参数的类型 个数 形参是是引用或者指针时,是否为constvoid func原创 2012-03-16 01:07:54 · 604 阅读 · 0 评论 -
面向对象的核心:多态(Ploymorphism)
多态:简单的来说就是指“一个接口 多种方法”,不同的对象调用相同的函数,可以实现不同的功能,程序在运行时决定调用哪一个函数。多态有三个注意点: 1.子类以父类的身份出现; 2.子类在运行时以自己的方式实现; 3.子类以父类的身份出现时,子类特有的属性和方法不可以使用。 为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的(virtual),子类可以选择使用ov原创 2012-03-15 23:30:34 · 728 阅读 · 0 评论 -
ASCII,Unicode和UTF-8
1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进转载 2012-03-10 01:35:54 · 393 阅读 · 0 评论 -
选择排序
选择排序(select sort):每一趟在n-i+1个记录中选择关键字最小的记录作为序列中的第i个记录。必须有记录:33 21 45 67 15 24第一趟结果:15 21 45 67 33 24 //第一趟,选择出最小的数15将第一个数33和15交换位置第二趟结果:15 21 45 67 33 24 //第二趟,由于最小的数就是21原创 2012-03-25 02:18:14 · 616 阅读 · 0 评论 -
一般插入排序总结
插入排序:数组分为两个部分:一部分是已排序的,一组是待排序的。每次从待排序的里面拿一个数插入到一排好序的数组里面。时间复杂度:n*n 空间复杂度:1插入排序是最基本的排序,需要深刻掌握。//插入排序 gavin 2012-3-23void myInsertSort(int *arr,int len)//待排序的是数组中的第1到第len的len个数,数组的arr[0]作为哨岗原创 2012-03-23 00:46:37 · 517 阅读 · 0 评论 -
C++中快排模板调用
在现在的各种内部排序算法中快速排序被认为是效率最高的排序算法(快速排序原理),因此在C++的库函数中已经封装了快排函数。所以在平时的编程,我们可以直接调用这已库函数,而不必自己去实现。这样一方面由快排保证了程序的效率,另一方面也保证程序的正确性和可读性。 调用c++快排的库函数的格式:假设待排序的数组是:T arr[100],那么调用快排函数的格式为:qsort(arr,100,s原创 2012-03-25 01:06:52 · 6786 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort):首先将记录的第一个关键字和第二个的关键字比较,如果第一个比第二个大那么就交换第一个和第二个的位子,然后将第二个和第三个比较…以此类推知道将第n-1和第n个比较,那么这样一趟下来可以保证最大的一个记录“沉”到了最后面,这样在对第1到第n-1冒泡,一般第i趟冒泡到n-i+1,要循环n-1次。比如说有记录:49 38 65 97 76 13 27 第一趟:原创 2012-03-24 19:22:07 · 679 阅读 · 0 评论 -
打印1~N的全排列(C++)
源代码如下:具体解释回头再写,下周二还有面试,还是先看书去#includeusing namespace std;int count = 0;void print(const int* arr , int len){ for (int i=0;i<len;i++) { cout<<arr[i]; if (i<len-1) { cout<<","; } el原创 2013-07-21 22:18:21 · 3552 阅读 · 0 评论