![](https://img-blog.csdnimg.cn/46eb0293c5ed47879f6357158c98cadf.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
万物之源C语言
文章平均质量分 78
C语之基
小码农UU
百引
展开
-
算法给小码农计数排序尊者
文章目录排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数计数排序计数排序的特性总结测性能1000 一千10000 一万100000 十万1000000 一百万10000000 一千万排序总结稳定性八大排序总结排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤统计相同元素出现次数根据统计的结果将序列回收到原来的序列中我原创 2021-12-03 18:10:06 · 1603 阅读 · 48 评论 -
算法给小码农归并排序列阵
文章目录排序常见的排序算法常见排序算法的实现归并排序基本思想递归写法通过调试看一下现象归并顺序归并排序递归子函数归并排序递归实现非递归写法2^n^个元素的数组随便几个元素的数组修正下标归并排序非递归实现 修正下标归一部分拷一部分归并排序非递归实现 归一部分拷一部分时间复杂度测性能1000 一千10000 一万 ==先抛弃选择和冒泡==100000 十万 ==再抛弃直接插入==1000000 一百万10000000 一千万代码S原创 2021-12-01 13:31:30 · 776 阅读 · 40 评论 -
算法给小码农冒泡排序铭纹,快速排序四极
文章目录排序常见的排序算法常见排序算法的实现冒泡排序 ==也是我们本身接触最早的排序 很简单的一个排序==完整冒泡排序代码快速排序(无敌的排序)将区间按照基准值划分为左右两半部分的常见方式有:1.hoare版本==(发明快排的人用的方法)==最左边做key最右边做key测性能选1000 一千选10000 一万选100000 十万选1000000 一百万选10000000 一千万但是想想上面快排有没有什么缺陷 明明是秒男还想在特殊情况下当持久男 哈哈如原创 2021-11-27 21:26:08 · 7276 阅读 · 71 评论 -
算法给小码农选择排序搬血,堆排序化灵
文章目录排序常见的排序算法常见排序算法的实现选择排序 ==最慢排序(最好理解)所以搬血==基本思想:直接选择排序数据交换 ==剥离出来其他函数也会用到 我明明是简洁之人为了一时的高级而忘记了朴素罪过罪过==选择排序堆排序向下调整函数堆排序代码测性能 ==让你看看什么叫堆====1000大小数组 一千====10000大小数组 一万====100000大小数组 十万====1000000大小数组 一百万====10000000大小数组 一千万 我们不带选择,插入玩太拉原创 2021-11-23 07:17:55 · 1110 阅读 · 71 评论 -
算法给小码农插入排序洞天,希尔排序轮回
文章目录排序排序的概念及其运用排序的概念排序运用==来上京东====大学排名==常见的排序算法常见排序算法的实现插入排序基本思想==但是数组肯定不是有序的,所以我们得先让数组有序==先把打印数组给剥离出来插入排序希尔排序( 缩小增量排序 ) (反正希尔牛逼)希尔排序步骤==**单组多躺**====**多组插入**====**多组一锅炖(要是分组插麻烦我们也可以一锅炖)**====**多次预排序(gap > 1)+直接插入(gap == 1)**==测直接插入排序和希尔排序的性能(让你看看什么才叫希原创 2021-11-20 05:00:00 · 5596 阅读 · 47 评论 -
算法给小码农链式二叉树-----一根草可斩星辰
文章目录链式二叉树那么链式二叉树有什么好的地方呢二叉树的遍历前序、中序以及后序遍历按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历:(上图为例图)(前中后访问根的时机不一样)分治二叉树二叉树节点我们把上面的树建好二叉树前序遍历二叉树中序遍历二叉树后序遍历二叉树节点个数次数用传址的方式次数用返回值的方式(假如我是代码我必然要嫁给这条代码)二叉树叶子节点个数二叉树第k层节点个数二叉树深度/高度二叉树查找值为x的节点代码BinaryTree.hBinaryTree.ctest.c链式二叉树我们需要原创 2021-11-15 05:00:00 · 16425 阅读 · 84 评论 -
算法给小码农堆排序至尊骨
文章目录堆排序升序一种非常正常的想法 空间复杂度O(N)堆升序函数HeapSort堆排序测试函数建堆(向上向下为建堆)向上调整(建大堆)交换排序&&再向上调整堆排序代码堆排序测试向下调整排升序 构建小堆排升序 构建大堆堆排序测试堆排序降序向上调整 (建小堆)向下调整(建小堆)建堆的时间复杂度堆排序升序一种非常正常的想法 空间复杂度O(N)把数组中的元素全都push到小堆中,然后再取堆顶元素重新给数组,就可以达到升序的效果了堆升序函数HeapSort//升序void原创 2021-11-12 06:00:00 · 3981 阅读 · 56 评论 -
算法给小码农TopK重瞳双目
文章目录Topk1000个数中找到最大的前十个方式1:方式2:==方式3:==Topk打印函数TopkPrint没有修改的接口见 [算法给小码农堆魂器--铁血柔情](https://blog.csdn.net/diandengren/article/details/121218819?spm=1001.2014.3001.5501)改掉的接口向上调整函数向下调整函数然后在Heap.h文件中加入Topk在n个数中找出最大的前K个 or 在n个数中找出最小的前K个(n>K)1000个数中找原创 2021-11-10 01:16:41 · 996 阅读 · 33 评论 -
身价过亿的帝都富豪对小码农说预处理学的不错
文章目录为了给富豪面子,小码农写了这篇博客——程序环境和预处理==**帝都富豪与富家总裁联动文章 [身价过亿的女总裁对小码农说你按键会了吗](https://blog.csdn.net/qq_42832862/article/details/120678330?spm=1001.2014.3001.5502)**==程序的翻译环境和执行环境详解编译+链接编译环境预处理详解预定义符号#define**==#define 定义符号==****==注意==****==#define 定义宏==**==**注原创 2021-10-09 21:28:57 · 1254 阅读 · 31 评论 -
存储使者,内存驿站-文件操作
文章目录文件操作什么是文件程序文件数据文件文件名文件的打开和关闭文件指针文件的打开和关闭==打开方式==在程序目录下面没有data.txt文件在程序目录下面有data.txt文件data放在桌面同理写文件==注意这个w也不是谁便用的==文件的顺序读写fputc写字符函数==**流**==fgetc读字符函数注意fputs写字符串函数同样适用所有输出流fgets读字符串函数同理适应所有输入流fprintf格式化输出函数同理他适用所有输出流fscanf格式化输入函数同理适用所有输入流fwrite二进制输出函数=原创 2021-09-28 19:33:44 · 683 阅读 · 20 评论 -
一篇绕指柔——柔性数组
文章目录绕指柔—柔性数组柔性数组的特点:法一法二那上面那个方法好一点呢第一个好处是:方便内存释放第二个好处是:这样有利于访问速度.==总结==绕指柔—柔性数组也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构体中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。柔性数组的特点:结构中的柔性数组成员前面必须至少一个其他成员。sizeof 返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行原创 2021-09-27 06:59:08 · 671 阅读 · 53 评论 -
微星级别丐版通讯录
文章目录丐版通讯录通讯录他能干什么呢静态版本test.cmain.c菜单contact.c初始化通讯录函数InitContact添加通讯录函数AddContact显示通讯录函数ShowContact找人函数FindByName删除指定联系人函数DelContact查找联系人函数SearchContact修改指定联系人函数ModifyContact快排通讯录函数(年龄排序)QsortContactcontact.h创建通讯录的一些宏选项(方便删改)用户信息结构体通讯录结构体声明函数动态版本contact.h改原创 2021-09-25 18:37:58 · 1042 阅读 · 47 评论 -
内存分配者-动态内存
文章目录动态内存管理为什么存在动态内存分配动态内存函数的介绍malloc==申请空间==和free==释放空间==那我们可不可以看开辟失败的呢有借有还 ==free释放内存==注意calloc申请内存realloc调整动态内存的大小realloc使用的注意事项当然realloc也可以直接开辟空间常见的动态内存错误**1.对NULL指针的解引用操作****2.对动态开辟空间的越界访问****3.对非动态开辟内存使用free释放****4.使用free释放一块动态内存开辟的一部分****5.对同一块动态内存多次原创 2021-09-21 20:23:11 · 887 阅读 · 53 评论 -
个性化-自定义类型
文章目录自定义类型结构体==声明一个结构体类型==特殊声明结构体自引用注意结构体变量的定义和初始化结构体内存对齐结构体内存对齐的规则几个练习==为什么存在内存对齐==总体来说解决修改默认对齐数offsetof宏的实现offsetof原格式结构体传参值传递址传递如何选择==结论: 结构体传参的时候,要传结构体的地址。====位段==什么是位段位段的内存分配位段的跨平台问题总结:位段的应用枚举**我们常量分为4种**枚举的优点简易计算器联合(共用体)联合类型的定义联合类型的声明联合的特点判断当前机器的大小端存储原创 2021-09-19 06:22:22 · 488 阅读 · 33 评论 -
爱旋不旋--旋转字符串
文章目录旋转字符串字符串左旋题前认知:暴力移位:三步翻转:还有3种方法但那三种就需要很强的数学功底了,具体的我也看不懂他怎么证明的数学公式,就不看了。哈哈哈判断字符串旋转题前认知字符串追加判断==(面试的时候能用库函数就用库函数)==旋转字符串字符串左旋实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB题前认知:一个字符串如果就定死了。eg:char arr[]=“dfdf”什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人原创 2021-09-13 23:23:52 · 526 阅读 · 14 评论 -
编程之美-内存函数
文章目录内存函数memcpy内存拷贝原格式分析内存拷贝的问题1.内存相关连的话,就会拷贝错误所以为了解决重叠拷贝的问题就有了memmove这个函数memmove内存重叠拷贝C语言规定原格式分析memset内存设置原格式分析memcmp内存比较原格式分析内存函数memcpy内存拷贝函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 ‘\0’ 的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定原创 2021-09-13 01:22:28 · 286 阅读 · 10 评论 -
编程之美-字符串函数
文章目录字符串函数求字符串长度原格式1.计数器方法2.递归3.指针-指针==长度不受限制==的字符串函数strcpy字符串拷贝原格式开始分析strcat字符串追加原格式开始分析注意:(绝对不可以自加)strcmp字符串比较原格式==长度受限制==的字符串函数strncpy原格式分析strncat原格式分析strncmp原格式分析字符串查找strstr找子字符串原格式分析strtok原格式分析错误信息报告strerror原格式分析总结:字符串函数c语言中对字符和字符串的处理很是频繁,但是c语言本身是没有字原创 2021-09-12 13:26:25 · 480 阅读 · 6 评论 -
字符串替换空格
文章目录字符串替换空格(多换一)面试题:代码结果字符串替换空格(多换一)????面试题:面试题需要考虑规范,算法,代码,可移植性,还有鲁棒性等,考虑了这些之后再下手就会很舒服首先我看到是%20替换空格,万一面试官说换其他的然后你很快的改了出来这也是一种本事,所以函数是必不可缺的,也最好有人机交互的样子,反正他有没有说写死.代码这里时间复杂度也是O(n),鲁棒性也不错,基本是可以拿下offer的代码#include<stdio.h>#include<assert.h>原创 2021-09-10 20:42:59 · 293 阅读 · 3 评论 -
二维数组中的查找
文章目录二维数组中的查找面试题3:似题:暴力遍历动态基点操作二维数组中的查找面试题3:似题:我做过这个类似的有杨氏矩阵为背景的,实际上是一样的暴力遍历二维数组暴力遍历的话时间复杂度为O(n2)虽然暴力但是应付学校考试这个就是一把好手#include<stdio.h>//const 就是因为二维数组是定死的int search(const int arr[4][4], int num,unsigned int* prow,unsigned int* pcol){ int原创 2021-09-10 17:24:44 · 275 阅读 · 5 评论 -
主人含泪杀病狗
文章目录主人含泪杀病狗首先分析有病狗(你不知道有几个)题外找凶手(白衣祸世-鉴狗医师)题内(白衣救世)医师是好的,也就是百分百相信题目一条病狗两条病狗三条病狗题目深思,理解奥妙假如49条病狗一个小故事:主人含泪杀病狗题目:有50家人家,每家一条狗。有 一天警察通知,50条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的 狗病了,就必须当天一枪打死自己家的狗。结果,第一天没有枪声,第二天没有枪声,第三天开始一阵枪响,问:一共死了几原创 2021-09-09 15:01:27 · 590 阅读 · 7 评论 -
四人两两过桥
文章目录四人两两过桥==题目==A、B、C、D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1、2、5、10 分钟,只有一支手电,并且 同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?东西格局第一步(闪电探查站点)第二步(火速回报)第三步(大部队跟上)就是最慢的两位充分利用公共时间第四步(次强接应)第五步(绽放花火般的会师)总结一下:四人两两过桥题目A、B、C、D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1、2、5、10 分钟,只有一支手电,并且 同时原创 2021-09-08 22:36:44 · 434 阅读 · 4 评论 -
试毒小白鼠
文章目录小白鼠==题目:==有1000瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?一瓶两瓶三瓶(自想一法)三瓶(序号规则)四瓶(验证指数)九瓶(验证猜想)一千瓶小白鼠==题目:==有1000瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?这题看似很难,但是仔细找规律的话还是可以发现一些端倪的可能1000很多,但我们从最简单的接触再延伸到1000就会感觉简原创 2021-09-08 18:25:47 · 582 阅读 · 2 评论 -
今晚只为你一人----指针
今晚只为你一人人类高质量指针题 知识的耦合首先说一下这题如果会了,基本c小成。没错看到这题就是头大,但一步一步来的话还是可以操作的,所以画板来!!!画好图就该磨刀霍霍向猪羊了这里有一个小坑,我反正没跳过去,怎么说呢这个基础好也百分之80掉过坑,不画图还真的会忘记就是上面cpp移动过,到了这里你还会把他放回原处,像这样这里有一个cpp[-2]等价*(cpp-2)的操作这里就有一个坑了,可能对不画图的朋友来说不是坑,但是一旦画图了,心中没留印象的话,那就是图在哪心在哪的错误原创 2021-09-07 23:43:36 · 247 阅读 · 3 评论 -
qsort库函数排序
void*一人饮酒醉,醉把char*,width成双对==quick sort快速排序==原函数解释用qsort一般到了这里肯定想自己写个qsort,因此我们仿写一个为BubbleSort漂亮之处void万能类型和char*,字宽width的联合出击用BubbleSortquick sort快速排序原函数解释用qsort#include<stdio.h>#include<stdlib.h>struct Stu{ char name[20]; int age;};原创 2021-08-31 22:52:18 · 631 阅读 · 9 评论 -
小酌数据一口
目录数据类型1.内置类型整型家族浮点型家族2.构造类型数组类型结构体类型枚举类型联合类型3.指针类型int* 整型指针float* 浮点型指针char* 字符型指针void* 空类型指针4.空类型void数据存储整形存储charintshort浮点型存储float数据类型1.内置类型char 字符数据类型short 短整型int 整型long 长整型long long 更长的整型f原创 2021-08-13 22:49:08 · 271 阅读 · 2 评论 -
浅谈函数栈帧
很抱歉我用的是vs19,这个笔记本不可以装两个vs,性能不够,不是什么好电脑,但vs19只有调用main函数的那个“东西”看不到,其他的还是可以看到很多的,在开辟空间上优化很多。废话不多说直接上什么叫栈帧可以直接说他就是一个空间,再准确点是存储空间。该明白的一点知识1.ebp(栈底指针),esp(栈顶指针)这两个寄存器中存放的是地址,这两个地址是用来维护函数栈帧的。2.从高地址向低地址移动3.压栈push :esp上移也就是朝低地址移动出栈pop:也叫弹出,栈顶元素弹出,esp下原创 2021-08-11 15:36:29 · 343 阅读 · 1 评论 -
优化的扫雷
[toc]扫雷还是那个熟悉的味道,优化的扫雷,无限接近真正的扫雷。test.c还是从main入手,本人不太喜欢直接上代码,感觉那样的话博友会看不懂,我喜欢分开来讲解。废话不多说,直接上代码(哈哈开个玩笑)。mainint main(){ int input = 0; int num = 3;//不可连续选错的次数 int flag = 1;//这个我不想说了,三子棋里面有,就是次数标记 srand((unsigned)time(NULL));//随机数起点,与rand()原创 2021-07-29 18:15:04 · 611 阅读 · 5 评论 -
优化的三子棋
目录三子棋test.c文件菜单函数game函数game.c文件InitBoard初始化棋盘函数DisplayBoard打印棋盘函数PlayerMove玩家移动函数ComputerMove电脑移动函数IsFull判断棋盘是否下满函数IsWin判断是否赢函数game.h文件宏函数申明三子棋这是一个用C语言写的简单小游戏,也是我第一个用C语言写的小游戏,游戏虽小,代码俱全。test.c文件为了方便自述,还是从mian进入(我也优化过三..原创 2021-07-28 20:08:39 · 435 阅读 · 3 评论 -
进制转换(无负数)
这是今天一个比较小的练习题,但是我想通过这个来试一试普遍的方法,也就是说自己写个方法,SysConvert(进制转换),两个参数,第一个就是源头数source_num,第二个就是目标进制destination_sys源头就是自己随便写个数,目标进制就是自己想要什么样的进制,然后return 目标进制数就好了。int main(){ int num = 0; int destination_sys = 0; printf("请输入想要转换的数:>"); scanf("%d%d",&a原创 2021-07-27 01:37:00 · 218 阅读 · 1 评论 -
求最大公因数
今天刚刚写到求最大公因数这个编程题,以前也做到过几次,没有把它记下来,今天正好把它写在Typora和博客上,一来方便以后学习,本人也不喜欢用纸质纸记笔记了,二来也熟悉熟悉这个软件。我个人认为只要有数学公式的,写代码就会很方便,毕竟是定理,数学家们证明过的,比较有权威性,所以我们直接拿来用就好了。最大公约数基本概念:如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,原创 2021-07-20 08:06:23 · 534 阅读 · 0 评论