博客专栏  >  编程语言   >  C语言入门

C语言入门

C语言内功修炼手册,带你了解C的各种特性与基础

关注
2 已关注
25篇博文
  • 3分钟Tips:递归的优化|尾递归

    定义:如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特...

    2018-03-02 22:41
    29
  • 堆排序的C语言实现以及和快排的比较

    昨天看了堆排序的文章,自己根据模板实现了一下,并且在原本的基础上做了一些改动,主要思想还是二叉树的排序和堆的生成,具体的算法不再详谈。有趣的是,之前看见有人说堆排序和快排同为不稳定排序,其效率却相差较...

    2018-03-05 22:29
    19
  • 理解归并排序的小窍门(以及误区)

    今天看了一整天归并排序,代码写下来没有问题,但是总是对归并排序背后的思想很模糊,总感觉缺了点什么。到晚上才搞清楚问题出在哪里,可能我太笨了。为了防止其他同学和我一样陷入到误区中来,我把自己的理解分享出...

    2018-03-13 23:00
    16
  • 有趣的算法(七):3分钟看懂希尔排序(C语言实现)

    在上一次的算法讨论中,我们一起学习了直接插入排序。它的原理就是把前i个长度的序列变成有序序列,然后循环迭代,直至整个序列都变为有序的。但是说来说去它还是一个时间复杂度为(n^2)的算法,难道就不能再进...

    2018-03-17 18:11
    40
  • 有趣的算法(八):3分钟看懂选择排序(C语言实现)

    之前两篇文章我们了解插入排序和它的衍生方法shell排序,那么今天我们来看看基于另一种算法思想的排序方法——选择排序。一、算法思想和直接插入排序相同,我们采用原地排序(即只用一个数组进行排序),分为有...

    2018-03-18 18:03
    12
  • Python面向对象中的多态与静态语言(C++,Java)的区别

    动态语言的多态和静态语言c++等多态含义不太一样,c++中的多态就是参数数量和类型不同的方法就是不同方法,而动态语言中的多态其实值的是方法的寻找过程,即向右找到类(或者单件类),在类中找不到的话再找父...

    2018-03-31 21:44
    13
  • 多进程|多线程的不同应用场景:Python还是C

    多进程与多线程无论是多进程还是多线程,只要数量一多,效率肯定上不去,为什么呢?我们打个比方,假设你不幸正在准备中考,每天晚上需要做语文、数学、英语、物理、化学这5科的作业,每项作业耗时1小时。如果你先...

    2018-04-08 14:06
    11
  • 有趣的算法(二):3分钟看懂快速排序

    排序算法千千万,只有快排的性能和优化后的泛化性质最好,在介绍快速排序前,先看看这张排序天梯图:什么是快速排序?快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必...

    2018-02-23 21:51
    79
  • 有趣的算法(三):最高效的快速排序分析与优化

    ——“随机化快速排序可以满足一个人一辈子的人品需求。”快速排序是一种很高效且有多种优化方法的排序算法,具体的介绍和实现在我的另一篇文章:三分钟看懂快速排序 之前只知道快速排序的平均时间复杂度为O(n×...

    2018-02-23 21:58
    41
  • 动态规划C语言实现之最长公共子序列(LCS)

    动态规划中,我曾对于01背包和硬币问题有过一些理解,今天参考了博客上其他同学的经验,完成了最长公共子序列LCS的代码实现。具体的算法内容请移步我的另一篇博文:动态规划入门之:最长公共字符串LCS 代...

    2018-02-06 23:09
    70
  • Leetcode刷题修炼手册

    “跟着我左手右手一个二叉树,堆栈链表反转换不同风格” 对于各位读研或者找工作的同学来说,Leetcode可能是无法绕过去的一个坎,很多公司的技术类岗位会从题库中抽题。此外,刷leetcode对于提高...

    2018-01-25 13:53
    149
  • 内存、cache和寄存器之间的关系及区别

    cache是一个高速小容量的临时存储器,可以用高速的静态存储器芯片实现,或者集成到CPU芯片内部,存储CPU最经常访问的指令或者操作数据。而寄存器不同,寄存器是内存阶层中的最顶端,也是系统获得操作资料...

    2018-01-12 22:51
    118
  • 判断一个单链表是否有环及环的链接点

    来看看经典面试题的解决方法:如何求解链表的环相关 1.判断单链表是否有环   使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如...

    2018-01-12 23:03
    61
  • Python与C:指针与按址传递

    一切都是对象,一切都是指针,一切都是东西(python的编程哲学)  终于把1000多页的python学习手册啃完了。从来没有从深层次上去理解一门编程语言,学习c是如此,学习java...

    2018-01-13 21:16
    190
  • C语言数据结构实现:栈

    1.什么是栈 栈是一种只能在一端进行插入或者删除操作的线性表(说明栈还是线性表结构,只是操作受限而已)。其中允许进行插入或者删除操作的一端称为栈顶。栈的插入和删除一般叫入栈和出栈。栈的顺序存储结...

    2018-01-10 13:16
    53
  • C语言:判断回文字符串的两种简单方法

    之前写过逆排序的数组实现,对于经典的回文问题却还没有深入研究过。今天抽空看了下,总结了两种比较常用的回文法。 一种是字符串(当然也可以叫数组法),此方法可以用来判断字符串输入以及INT类型的输入 ...

    2018-01-12 20:34
    228
  • 数据结构与算法:最短路径,拓扑排序的基本概念

    “相较于其它方式,我一直热衷于推崇围绕数据设计代码,我想这也是Git能够如此成功的一大原因[…]在我看来,区别程序员优劣的一大标准就在于他是否认为自己设计的代码还是数据结构更为重要。” —— Linu...

    2018-01-08 21:51
    72
  • 数据结构与算法(一):线性表、栈、树(二叉树,AVL树)、图

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误...

    2018-01-08 21:55
    154
  • C语言基础:用快速排序实现输出最大数

    //此函数用来寻找从右往左第1位~第K位数字中最大的数 //因为数组长度较小,采用递归排序的非链表方法#include #include #include #define div 10 #defi...

    2017-11-17 23:09
    122
  • [C/C++]堆栈的概念与区别

    在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能...

    2017-12-22 23:01
    92
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部