- 博客(9)
- 收藏
- 关注
原创 【算法导论】之快速排序深度分析
前言最近学习了算法导论上的快速排序部分,有不少体会。今天就来分享一下。在此欢迎大家批评指正文中的错误。目录索引前言快速排序正文1.快速排序的优点2.快排的原理及实现3.快排的性能分析快排的几种优化方式1.主元的随机化选取2.三数取中3.减小递归的栈深度——小区间优化4.其他优化方法快速排序正文1.快速排序的优点说起快速排序,它的名字就显现出快排最大的优点————快。到底有多快呢?咱们用数据说话:综合一般情况来说,快排确实有(亿点快)。特别是对较大数据量的排序。快速排序的综合时间复杂度是O
2021-06-29 16:53:41
1438
原创 用<math.h>遇到 Redefinition of ‘y1‘ as different kind of symbol的问题
大家好,我是程序员白菜。前言今天在用C语言写题目时发现了一个奇怪的问题。费尽周折,解决问题之后。遂与大家分享,希望大家遇到之后可以快速解决。问题如下在vscode上面编译一下代码发现了问题。提示:Redefinition of ‘y1’ as different kind of symbol重定义了y1。原因解释:此次定义的y1变量与C语言函数库<math.h>中定义的y1重名了,所以编译错误,重定义了y1变量。解决方法:将y1变量改个名字即可。如果你想深入了解:请参照r
2021-05-06 13:37:08
2995
2
原创 我发现了leetcode的小“bug“ ???
今天,在用C语言刷LeetCode时,天真的我发现了leetcode的一个小 ”bug“。但事实证明:我错了!题目:二叉树的前序遍历图片:我用C语言的解答如下:/** * Note: The returned array must be malloced, assume caller calls free(). */ //二叉树节点的个数int TreeSize(struct TreeNode* root){ return root==NULL?0:TreeSize(roo
2021-05-04 11:11:48
1113
2
原创 深入理解C指针(1)——空指针的正确使用,指针的加减运算,指针的相关规定
许多面试官常说:C程序员新手和老手的一大差别就在于是否对指针有深刻理解,能否高效利用指针。笔者在此建立《深入理解C指针系列》专栏与大家分享我的C指针学习。C语言编程的精髓就是对指针的精巧使用,利用指针变量可以表示各种类型的数据结构,并能想汇编语言一样处理内存地址,可以编出精炼而高效的程序。指针极大的丰富了C语言的功能。指针变量的大小指针变量的值就是某个内存单元的地址。指针的大小在32位机器上是4个字节,在64位机器上是8个字节。指针的类型指针的类型有int,char,float,doub
2021-03-13 15:36:47
1275
2
原创 C面试题:统计字符个数,并按先后顺序输出
统计字符个数题目:假设输入一行字符串。统计其中小写字母出现的次数,并按照出现次数的多少依次输出。当出现相同次数的字母时,按照字母的先后顺序依次输出例如:“I love programming@C with class and java”输出:分析:题目要求统计小写字母,则可使用 islower() 函数。(PS:需要引用头文件<ctype.h>),将小写字母录入。对于出现相同次数的字母,还要按照字符的ANSCII进行排序。我们想到可以用数组来顺序存储a~z的出现次数。定义数
2021-03-03 21:10:36
1634
3
原创 C语言中那些“不受限制”的字符串函数
“不受限制的“字符串函数按《C和指针》中所说,那些常用的字符串函数都是“不是限制的”,就是说它们只能通过寻找字符串末尾的NULL来判断字符串的长度。strlenstrlen函数用于求解字符串长度,其返回类型为unsigned int(即size_t)。strlen函数从起点开始,往后计数,遇到‘\0’停止。值得注意的是:strlen函数的返回类型。看如下代码:#include<string.h>#include<iostream>using namespace std;
2021-03-02 08:32:23
2284
5
原创 位运算及其应用实例
C语言位运算及其应用众所周知,数据在计算机内存中都是以二进制的形式存放的。在计算机发展早期,位运算是C语言特有的运算。深入理解位运算有助于C语言学习进阶。位运算是按数据在内存中存放的补码进行运算的。正数的源码,反码,补码都相同。负数的源码(除符号位)按位取反得到反码,反码+1得到补码。位运算介绍:1.按位与&:操作数如果对应的二进制位的值都为1,则该二进制位按位与的结果为1,否则为0;3&5=12.按位或 |操作数如果对应的二进制位的值都为0,则该二进制位按位或的结果为
2021-02-25 12:22:08
575
原创 素数求解的C语言方法
问题求解:找出100到200之间的素数并输出下面,我们用C语言求解试除法*:素数的因子只有1和素数其本身。采用试除法将2到i 之间的数字作为除数,求余数。直到除数等于i 时,余数才为0,则 i 为素数。上面的代码除数从2到素数之间的每个数都试除了一次,效率不高。下面,我们将代码优化一下。考虑到素数(除2以外)都是奇数。仔细想想,任意一个整数x,其因数(除自身)都是不大于x/2的。对此,我们进一步优化。进一步优化,我们知道i=a*b,a或b至少有一个数字<=sqrt(i)
2020-12-13 21:52:54
18257
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人