随笔分类 - 面试
摘要:https://github.com/iyjhabc/simple_algorithm1、快速排序 选择数组的其中一个元素(一般为第一个)作为分界pivot,用两个游标分别从后往前和从前往后扫描数组。先从后游标开始,当后游标所指的值比pivot小,则与pivot交换,后游标交换后才扫描前游标;当前游标所指值比pivot大,则与pivot交换。一次分组的结果是pivot前面的元素全部比pivot小,后面的全部比pivot大。既然对前后两部分继续调用分组函数即可完成排序。 下面的程序对上述过程做了优化,交换的时候直接把游标所指的值覆盖到pivot的位置上,覆盖后,原来游标所指的位置作为下一次的..
阅读全文
摘要:C/C++:1.malloc和new的区别答:1、m是C语言库函数,n是C++操作符。2、m按字节在栈中分配内存,所以经常和sizeof搭配,n自动根据类型分配。3、n会自动调用默认构造函数而m只分配内存空间。2.delete与delete[]的区别答:没[]的delete用于释放单个new对象,而[]用于释放整个new数组。如果对数组用不带[],则只有第一个对象调用了析构函数,其他没有。3.什么是引用?引用与指针的区别?引用跟指针实质上都是内存地址。不过引用声明时必须初始化,声明后不能改变指向的地址值。比指针更安全。引用相当于变量的别名。4.sizeof的用法答:sizeof(类型)为类型的
阅读全文
摘要:一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字常量区 —常量字符
阅读全文

浙公网安备 33010602011771号