面试知识点理解
面试真题
北枫凉
The greatest gift you can give yourself is that of education.
展开
-
程序中的堆栈深入理解
概念区分:1. 堆栈:个人认为这个需要分成数据结构中的堆栈和程序中的堆栈(即操作系统中的堆栈,因为程序中的堆栈使用操作系统控制的)这两个概念是不同的。这里主要讨论的是程序中的堆栈。2. 通常所说的堆栈指的就是栈,堆就是堆。栈1. 一个程序的栈区大小是固定的。解释:Windows中栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址(刚开始栈为空)和栈的最大容量是系统...原创 2020-04-07 08:09:28 · 1658 阅读 · 0 评论 -
查找算法 二分查找
/*020/4/6二分查找*/#include<stdio.h>/*二分查找:找到元素时返回元素下标,未找到时返回-1*/int binary_search(int A[],int n,int x){ int low,mid,high; low = 0; high = n-1; while(low <= high) { mid = (low + ...原创 2020-04-06 10:15:59 · 121 阅读 · 0 评论 -
查找算法 顺序查找
/*2020/4/6线性查找*/#include<stdio.h>enum BOOL{ NO,YES};typedef enum BOOL BOOL;BOOL linear_search(int A[],int x){ int i; for(i = 0;i<10;i++) { if(A[i] == x) break; } if(i ...原创 2020-04-06 09:49:48 · 274 阅读 · 0 评论 -
C语言 全局变量和局部变量的申请
今天在学习排序算法比较性能的时候,针对数组的申请出现了问题。然后就去寻找为什么?#include <stdio.h>int main(){ int a[1000000];//局部变量 return 0;}//编译运行后发现溢出错误#include <stdio.h>int a[1000000];//全局变量int main(){ return 0;...原创 2020-03-28 18:15:59 · 1177 阅读 · 1 评论 -
快速排序--选取A[0]做主元,随机选取做主元,三点中值做主元
代码实现以及现象分析//北航机试2020/3/28/*头中尾三位取中针对不同的数据量*/#include<stdio.h>#include<stdlib.h>#include<time.h>#include<algorithm>using namespace std;#define MAXN 10000000int...原创 2020-03-29 01:01:57 · 462 阅读 · 0 评论 -
快速排序--三元选中值代码实现
三元选中值代码实现三点选中位主元,针对不同的Cutoff运行结果,以及是否使用Cutoff的运行结果//北航机试2020/3/28/*头中尾三位取中针对不同的数据量*/#include<stdio.h>#include<stdlib.h>#include<time.h>#include<algorithm>using n...原创 2020-03-28 18:24:58 · 316 阅读 · 0 评论 -
快速排序--实现思想,复杂度分析,各种实现方法的优劣
快速排序算法思想 快速排序可能是现实应用中最多的一种,但是没有一种排序算法能适应所有的情况,在最糟糕的情况下,快速排序性能就比较差了。但是对于大多数情况下,对于大量的随机数据的排序,快速排序算法的效率还是非常高的。(前提是将快速排序算法实现的小细节实现到位,快速排序的特点是自己编写是容易写错)它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分...原创 2020-03-25 22:41:34 · 542 阅读 · 0 评论 -
希尔排序
首先回顾插入排序:算法思想:将待排序列分成两个子序列,其中一个有序,另外一个无序。每次从无序序列选取第一个元素,插入到有序序列中,直到所有的元素全部插入。实现待排序列:L[1…N]开始时,有序序列为空,无序序列为待排序列。可以假设待排序列中的第一个元素形成的序列为有序序列L[1](因为一个元素自身肯定是有序的,剩下的N-1个元素形成的是无序序列L[2…N]。这样总共就需要插入N-1...原创 2020-03-28 16:15:02 · 422 阅读 · 0 评论 -
排序算法稳定性的作用
稳定性算法相对于不稳定性算法,有什么特别的用么,反正是等值,谁先谁后,不都一个样子么?实际业务中,可能会按多个属性排序。比如这么一个场景:有一批订单,按日期降序排列,如果日期一样的,按订单金额降序。这个需要很好理解,实现起来,可能就没那么容易,按日期排好了,再把日期一样的按订单金额排一次。这个就不好实现,先把日期一样的分别取出来排下,再对应放回去,很麻烦。有了稳定性排序算法,就很容易实现。第...原创 2020-03-26 10:24:31 · 853 阅读 · 0 评论 -
冒泡排序和插入排序的比较
通过冒泡排序(改进后)和插入排序的学习,发现两者有相似的地方,并且在元素基本有序的情况下的,两者之间的性能比较有困惑。因为同样在最好的情况下(序列有序)的时间复杂度是O(N),并且交换元素的次数都是逆序对的个数I,那么如何进一步的分析性能呢?到底谁更好呢?(暗示一下:两种算法元素交换的次数都是逆序对的次数)冒泡排序法和插入排序法的核心思想就是元素交换,虽然整体的结构都是两层的循环嵌套,但...原创 2020-03-26 10:01:18 · 3525 阅读 · 0 评论 -
表排序
什么情况下会用到表排序呢?就是待排的元素不是简简单单的整数,比如说一个十分复杂的结构体,例如一本书的内容,但需要移动一个元素的时候,移动元素的时间是不能够忽略不计的。于是如果简单调用快速排序或者其他排序算法,他们都是需要频繁的交换或者移动元素。如果这个元素是书或者课本的时候,元素移动的时间就是一个很恐怖的事情 。表排序是这样的一个算法,在实际的过程中是不需要移动元素的,需要移动的只是指向这些元...原创 2020-03-25 23:54:47 · 387 阅读 · 1 评论 -
归并排序
归并排序算法思想归并排序算法思想的核心是有序子序列的合并 原始的Merge()函数的处理: - 数组A[],指针Aptr - 数组B[],,指针Bptr - 新增的数组C[],指针Cptr 并且很容易知道Merge()函数的时间复杂度是O(N). 归并排序的Merge()函数的处理: - 因为排序的是一个数组,故要分成两部分 - ...原创 2020-03-24 11:59:49 · 159 阅读 · 0 评论 -
简单排序--冒泡、插入、选择
目录简单排序冒泡排序选择排序插入排序希尔排序堆排序归并排序快速排序表排序基数排序排序算法的比较简单排序冒泡排序选择排序插入排序希尔排序堆排序归并排序递归算法实现/*归并算法的实现*/#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;...原创 2020-03-22 22:57:59 · 169 阅读 · 0 评论 -
C/C++中随机数的产生
在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为int rand (void);void 表示不需要传递参数。rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 <stdlib...原创 2020-03-28 10:23:43 · 200 阅读 · 0 评论 -
C/C++计算程序运行的时间
使用方法#include<stdio.h>#include<time.h>//使用其中的clock()函数int main(){ colck_t start,end; start = clock(); //function() end = clock(); //需要强制类型转换为(double) printf("%f\n",(double)(end-...原创 2020-03-28 10:53:49 · 565 阅读 · 0 评论 -
中央处理器:指令的执行过程
文章目录指令周期相关概念指令执行的方案单指令周期多指令周期小结:流水线方案指令周期相关概念CPU从主存中取出并执行一条指令所需要的时间称为指令周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作,该阶段所花费的时间称为机器周期(CPU周期)。指令周期常常用若干个机器周期数来表示。一个完整的指令周期:取指周期、间址周期、执行周期、中断周期指令执行的方...原创 2020-03-20 14:36:53 · 1468 阅读 · 0 评论 -
冯诺依曼体系结构
冯诺依曼结构,也就是“存储程序”的概念奠定了现代计算机的基本结构。“存储程序”的概念理解多种类型的指令和数据均以数字的形式存到存储器中(存储程序型计算机即源于此)根据特定的问题编写的程序存放在存储器中,然后按照存储器中的程序的首地址执行第一条指令,以后就按照该程序的规定的顺序执行其他指令,知道程序运行结束存储程序的理论要点计算机中的数字采用二进制电路中容易实现,通电后高电平表示1...原创 2020-03-20 10:25:47 · 335 阅读 · 0 评论 -
CPU指令集类型:CISC和RISC的区别
CISC(Complex Instruction Set Computers,复杂指令集)RISC(Reduced Instruction Set Computers,精简指令集)CISC和RISC是两大类主流的CPU指令集类型,其中CISC以Intel,AMD的X86 CPU为代表,而RISC以ARM,MIPS为代表。...原创 2020-03-20 14:37:38 · 1875 阅读 · 0 评论 -
计算机体系结构和计算机组成原理
计算机体系结构(指令系统)概念:(计算机体系结构是指根据属性和功能不同而划分的计算机理论组成部分及计算机基本工作原理、理论的总称。这个不理解没关系)计算机体系结构是程序员所看到的计算机的属性,它是研究计算机体系的概念性结构和功能特性。指令系统即机器语言,指机器所具有的全部指令的集合,反映了计算机所拥有的基本功能。计算机组成原理概念计算机组成指的是系统结构的实现。主要...原创 2020-03-20 09:13:34 · 10355 阅读 · 0 评论 -
x86和x64
X86是CPU的指令集其中包括32位和64系统x86就是32位的x86-64是64位的(X64即x86-64)在不引起混淆的情况下可以统称为x86另外32位的系统内存最大支持2的32次方即4G,64位系统内存最大支持2的39次方即512G...原创 2020-03-20 08:09:53 · 242 阅读 · 0 评论 -
极大似然估计深度理解
转载极大似然估计转载 2020-03-15 11:42:00 · 91 阅读 · 0 评论