菜鸟笔记
提升您的技术认知

算法笔记-ag真人游戏

【c 】数组中的第k个最小元素

菜鸟阅读 : 881

分治思想求解的问题,但是比较特殊,只有分解问题和求解小问题,不需要合并 每次也只需要经过判断,分解一半,所以比其他分解两边的效率高 最坏情况时间复杂度为o(n^2),期望时间复杂度为o(n) 找基准值时候可以考虑随机选择 #include&...

递归

菜鸟阅读 : 1316

递归的特点: (1)递归就是在过程或函数里调用自己;(2)在使用递归时,必须有一个明确的递归结束条件,否则会陷入死循环;(3)递归算法通常比较简洁,但运行效率较低;(4)在递归调用的过程中系统为每一层的返回点、局部变量等开辟了栈来存储,所以...

c 插入排序

菜鸟阅读 : 1561

性能分析:   时间复杂度:o(n^2)   空间复杂度:o(1) 但是综合来讲,要比冒泡排序和选择排序好一些。     #include #include u...

结构体对齐(字节对齐)规则及大小计算

菜鸟阅读 : 1973

什么是字节对齐 这跟读取数据有关,cpu读取一次能读取到的内存大小跟数据总线的位数有关,如果数据总线为16位,那么cpu一次能够读取2字节;如果为32位那么cpu一次可以读取4字节,而读取数据是需要消耗时间的,为了提高效率,尽量让同一个数据...

递归之求数组最大值

菜鸟阅读 : 870

这个比较简单,想清楚基线条件和递归条件就可以了,直接看代码(vs直接运行): #include #include using namespace std; int arraymax(int data[], int length); int ...

递归之快速排序

菜鸟阅读 : 1198

递归快速排序的步骤: (1)选择基准值 (2)将数组分成两个子数组:小于基准值的元素组成的子数组和大于基准值的元素组成的子数组。 (3)对这两个子数组进行快速排序。 c 代码(可在vs直接运行): #include

递归之二分查找

菜鸟阅读 : 3297

简单查找的时间复杂度为o(n) 二分查找的时间复杂度为o(logn) 用递归实现二分查找:   基线条件:数组只包含一个元素。如果如果要查找的值与这个元素相同,就找到了;否则说明不在数组中。   递归条件:把数组分成两半,将其中一半丢弃,并...

链表的题型和解题思路

菜鸟阅读 : 1004

1.链表中环的入口节点 首先判断头指针是不是空的然后需要判断这个链表中包不包含环:两个指针,一个一步一个两部,如果相遇,说明存在然后判断环节点的个数:从相遇的位置开始,往前走并计数,直到和自己再次相遇,得到个数然后找出入口节点:从头开始,俩...

算法的时间复杂度和空间复杂度

菜鸟阅读 : 1302

一、常用的算法的时间复杂度和空间复杂度 二、算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度  一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每...

几种常见的位运算

菜鸟阅读 : 1072

1、判断奇偶数 如果把一个数n以二进制数的形式表示的话,我们只需要判断最后一个二进制位是1还是0即可。如果是1,则代表奇数,否则为偶数。代码如下: if(n & 1 == 1){ // n是奇数 } 2、交换两个数 x = x ^ ...

网站地图