首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
编程基础
订阅
蟑螂hoop
更多收藏集
微信扫码分享
微信
新浪微博
QQ
13篇文章 · 0订阅
手写算法并记住它:计数排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如计数排序,所谓“计数”,就是数一数,统计每个元素重复出现的次数。 上图演示了该算法的总体流程。分为两步:查和排。 首先查一查每个元素都出现了多少次,比如元素0出现了1一次,元素1出现了一次,元…
手写算法并记住它:归并排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如归并排序,“归并”二字就是“递归”加“合并”。它是典型的分而治之算法。 上图中,先把数组一分为二,然后递归地排序好每部分,最后合并。 解决办法很容易想到,两权相较取其轻。 如上图所示,每次比较…
代码整洁 vs 代码肮脏
写出整洁的代码,是每个程序员的追求。《clean code》指出,要想写出好的代码,首先得知道什么是肮脏代码、什么是整洁代码;然后通过大量的刻意练习,才能真正写出整洁的代码。 WTF/min是衡量代码质量的唯一标准,Uncle Bob在书中称糟糕的代码为沼泽(wading),这…
漫画:什么是红黑树?
1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。 接下来我们依次插入如下五个节点:7,6,5,4,3。依照二叉查找树的特性,结果会变成什么样呢? 1.节点是红色或黑色。 2.根节点是黑…
正则表达式简明教程
正则是字符串匹配模式,在处理文本时很有用。最常见的操作就是用于查找和替换。 说到处理文本,其实我们每天敲的代码就是文本,因此常用的代码编辑器的查找替换工具基本都支持正则语法的。 先说明一下,接下来的内容都以《We will rock you》的歌词测试文本。 使用的正则测试工具…
base16,base32,base64 编码方式的通俗讲解
base16,base32,base64 都是编码方式,对应有各自的一套编码算法。 但是有人经常称它们是加密,例如 base64 加密。其实这种说法不算全对。因为默认的 base16,base32,base64 的各种信息都是公开的,公开的包含有: 在 base16,base3…
正则表达式不要背
正则表达式一直是困扰很多程序员的一门技术,当然也包括曾经的我。大多数时候我们在开发过程中要用到某些正则表达式的时候,都会打开谷歌或百度直接搜索然后拷贝粘贴。当下一次再遇到相同问题的时候,同样的场景又再来一遍。作为一门用途很广的技术,我相信深入理解正则表达式并能融会贯通是值得的。…
手写算法并记住它:基数排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如基数排序,就是按照数字的“位”来排序。 位,是进位的位,比如十进制数的基数是10,就可以按照个十百千万等位来排序。 上图演示了基数排序算法的总体流程。先按个位从小到大排序,然后再按十位、百位排…
手写算法并记住它:插入排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如插入排序,所谓“插入”,实指把待排序元素插入到已排好的序列里。 上图演示了第4次遍历,此时元素1、3、5已经是有序序列,待排的元素是2,要把它插入到1和3之间。此时3和5都往后移动了一位。 思…
手写算法并记住它:快速排序(最易理解版)
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如快速排序,一个快字就能体现出其价值,因而它是用得最多的。 因为它相对难一些,本系列将分两篇文章讲解它。 上一篇是5行代码实现版本。而本篇是原地排序算法。 快速排序这个名字是针对其性能来起的,但…