- 博客(3)
- 资源 (2)
- 收藏
- 关注
原创 C基础:堆排序
堆排序使用的是有序二叉树数据结构存储排序的,所有的非叶子节点均不大于或不小于子节点。分析时间复杂度为:O(nlogn),不稳定。空间复杂度为:O(1),因为原地排序,没有使用额外空间。代码实现#include <stdio.h>#include <stdlib.h>void swap(int arr[], int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}void.
2020-08-28 21:00:46 208
原创 大话C++之:内存对齐
在使用sizeof()计算结构体和class大小的时候,往往很多时候计算出来并不是我们想要的结果。最近在使用的时候就特别想了解它内在的原理,搞懂它的本质。看一下下面这个例子:struct Struct{ char a; int i;};问题是:这个结构体大小是多少?很多人回答可能是5个字节。分析结构体的组成是:char占1个字,int占4个字节。1+4=5,没错吧?其实这个答案应该是:不确定。因为它给的条件不能够得出一个确定的答案。打开VS 2017,64位程序执行一下,得出的结果是8。
2020-08-05 20:59:29 247
原创 深入浅出:原码,反码,补码及减法
众所周知(我不说大家也知道),计算机内部是以二进制存储数据的,对于不同的类似可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,我们下面来一步步说一下举个例子,1+1怎么表达呢?1的二进制表达为(为了方便用1个字节表示):00000001那么1+1即表达为:00000001 + 00000001 = 00000010 = 2是吧,这样子是对的,so easy。再接着看下面,2-1怎么表达呢?2的二进制为:00000010-1的二进制
2020-08-03 16:00:46 1895
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人