- 博客(10)
- 收藏
- 关注
原创 常数空间实现归并排序
今天写了一道题,要求用O(nlogn)的时间复杂度排序。单链表存储的。快排,堆排序,归并排序的时间复杂度是O(nlogn),只有归并排序比较适合单链表的操作。题目又要求,空间复杂度是常数级别的。这里我们知道,普通的归并排序,空间复杂度是由辅助空间和递归的栈空间构成的。一开始以为指的是辅助空间,消除辅助空间的归并方法有如下两种。两条链表,确定一个次序,比如第一条链表存小的值。然后要是第一条链表值大于第二条链表,交换。由于交换过后,可能导致第二条链表不是有序的,在这里可以使用冒泡排序的方法让其有序。这样
2022-02-15 12:18:21 476
原创 C++ Primer小记 第七章 类
第七章 类7.1 定义抽象数据类型 定义在类内部的函数是隐式的内联函数。7.1.2 定义改进的Sales_data类引入this 任何对类成员的直接访问都被看作this的隐式引用。成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象。 因为this形参是隐式定义的。所以,任何自定义名为this的参数或变量的行为都是非法的。因为this的目的总是指向 “这个” 对象,所以this是一个常量指针,我们不允许改变this中保存的地址。常量成员函数string isbn()
2021-02-19 22:41:33 174
原创 C++ Primer小记 第六章 函数
第六章 函数6.1 函数基础函数的形参列表 不带形参的函数,两种定义方法void f1(){} //隐式定义void f2(void){} //显式定义6.2 参数传递6.2.1 传值参数指针形参 指针的行为和其他非引用类型一样。当执行指针拷贝操作时,拷贝的是指针的值。拷贝之后,两个指针是不同的指针。因为指针使我们可以间接的访问它所指的对象,所以通过指针可以修改它所指对象的值。//Q:了解指针形参 void reset(int *p){ *p = 50; cout
2021-02-19 22:40:52 229
原创 C++ Primer小记 第四章 表达式
第四章 表达式4.1 基础4.1.1 基本概念左值和右值 简单归纳:当一个对象被用作右值的时候,用的是对象的值(内容)。当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。 不是很理解,日后补上4.2 算术运算符取余运算m%(-n) = m%n(-m)%n = -(m%n)-21 % -8 ; // -5 21 % -5 ; // 14.4 赋值运算符窄化转换 可以使用花括号来对对象初始化。但是要注意,对于内置类型,如果用花括号初始化,如果存在丢失数
2021-02-19 22:40:05 121
原创 C++ Primer小记 第三章 字符串、向量和数组
第三章 字符串、向量和数组3.1 命名空间的using声明① 这种方式可以只声明std中的cin,即不需要包含整个std命名空间using std :: cin;② 这种方式是把std整个命名空间都包含进去using namespace std;③ 注意在头文件中,不应该包含using声明。因为头文件的内容会被拷贝到每一个引用他的文件中,那么using声明也会被拷贝过去,这样可能会不经意间产生错误。3.2 标准库类型string3.2.1 定义和初始化 string 对
2021-02-19 22:39:23 222
原创 C++ Primer小记 第二章 变量和基本类型
第二章 变量和基本类型2.1 基本内置类型2.1.1 算术类型① 字符型被分成了三种: char ,signed char,unsigned char 注意 char 和 signed char 并不一样。尽管字符型有三种,但是字符的表现形式却只有两种:带符号的和无符号的。 类型***char*** 会表现为上述两种中的一种,具体是哪种由编译器决定。基于以上的特性,要特别注意char类型的使用。因为有的机器这个用法,有的机器那个用法。如果要表达的数比较小要使用char类型
2021-02-19 22:37:53 227
原创 C++ Primer小记 第一章 开始
第一章 开始1.2 初始输入输出cout << "Enetr two numbers :" << endl;① << 运算符 :即,向流中写数据。上面这段代码其实并不简单。 << 运算符 接收两个运算对象。左侧的运算对象必须是一个 ostream 对象。右侧的运算符就是要打印的值。此时运算符把给定的值写到给定的 ostream 对象中。输出运算符的计算结果就是其左侧运算对象 ostream 。 这个输出语句用了两个 <&
2021-02-19 22:36:24 76
原创 Java中StringBuffer类中append、insert、delete方法使用时的缓冲区大小变化解析
今天看Java的时候突然想,StringBuffer默认是16个字符空间,字符缓冲区长度可变,那到底是怎么变的?append方法到底是怎么扩大缓冲区的?insert方法如果插入过多,会丢失还是会扩大缓冲区?delete方法会不会把缓冲区缩小? 然后写了一下代码,得出append、insert方法在使用过程中可能会扩大缓冲区,扩大规律是(字符缓冲区大小+1)*2 ...
2019-05-27 17:01:08 729
原创 如何利用~ & ^ | + 及移位运算符来实现 ! 的功能
**如何利用 ~ & ^ | + << >> 等运算符来实现 ! 的功能**假设x为非0元素,那么 !x=1,x为0,则!x=1把他们写成2进制的来观察一下1.先随便列几个数来观察一下规律#1x=00000000;!x=00000001;#2x=01010010;!x=00000000;#3x=10111000;!x=00000000;...
2019-03-28 23:14:16 428 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人