首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
算法
订阅
j44
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
手写算法并记住它:选择排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如选择排序,所谓“选择”,就是每次遍历时,选择一个最小的交换到已排好序列的后面。 上图演示了第三次遍历,此时元素1和2已经排好序,再在剩下的元素中找到最小的元素3,然后与目标位置交换。 这一点难…
手写算法并记住它:计数排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如计数排序,所谓“计数”,就是数一数,统计每个元素重复出现的次数。 上图演示了该算法的总体流程。分为两步:查和排。 首先查一查每个元素都出现了多少次,比如元素0出现了1一次,元素1出现了一次,元…
手写算法并记住它:快速排序(5行代码简单版)
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如快速排序,一个快字就能体现出其价值,因而它是用得最多的。 因为它相对难一些,本系列将分两篇文章讲解它。 本篇是一种简单实现版本,与归并排序做对比,摸清快排的总体思路。下一篇才是常见于各教程中的…
手写算法并记住它:冒泡排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如冒泡排序就很形象,遍历n次,每次循环相邻元素两两比较,把其中大的元素往后放。例如: 上图演示了冒泡过程的第一次循环。其中,最大的元素5就像气泡一样逐步上升到最后一位。 第一次遍历会把最大的元素…
如何答一道惊艳面试官的数组去重问题?
数组去重应该是面试必考问题之一。 虽然它是一道并不复杂的问题,但是也能看出面试者的广度和深度,还有考虑问题的全面性。 实际开发中我们应该选择哪种方式数组去重,本文告诉你。 你以为的不一定你以为,面试官不只是让你去重一个数组,他想知道的有点多,包括你的思想。 思想: 双重 for…
手写算法并记住它:桶排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如桶排序,一提起“桶”,我就想到了垃圾分类。 桶排序就是先分类,即把数据放进相应的桶里,然后对每个桶进行局部排序,最后再把桶合并一下就行了。 上图演示了该算法的总体流程。分为三步,分类,排序和合…
手写算法并记住它:快速排序(最易理解版)
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如快速排序,一个快字就能体现出其价值,因而它是用得最多的。 因为它相对难一些,本系列将分两篇文章讲解它。 上一篇是5行代码实现版本。而本篇是原地排序算法。 快速排序这个名字是针对其性能来起的,但…
手写算法并记住它:归并排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如归并排序,“归并”二字就是“递归”加“合并”。它是典型的分而治之算法。 上图中,先把数组一分为二,然后递归地排序好每部分,最后合并。 解决办法很容易想到,两权相较取其轻。 如上图所示,每次比较…
手写算法并记住它:基数排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如基数排序,就是按照数字的“位”来排序。 位,是进位的位,比如十进制数的基数是10,就可以按照个十百千万等位来排序。 上图演示了基数排序算法的总体流程。先按个位从小到大排序,然后再按十位、百位排…
手写算法并记住它:插入排序
本系列文章就尝试解决这个问题。 研读那些排序算法,细品它们的名字,其实都很贴切。 比如插入排序,所谓“插入”,实指把待排序元素插入到已排好的序列里。 上图演示了第4次遍历,此时元素1、3、5已经是有序序列,待排的元素是2,要把它插入到1和3之间。此时3和5都往后移动了一位。 思…