视频解说:如何快速高效的刷算法题 —— 排序专题
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频解说:如何快速高效的刷算法题 —— 排序专题相关的知识,希望对你有一定的参考价值。
文章目录
前言
「 简单题 」 懒得刷,「 中等题 」 看题解,「 困难题 」 坐一天。
这是不是你目前的现状?如果是这样,那么,这很合理!额……
今天这个教程,我将教会你如何重塑信心,东山再起,重夺刷题界的卷王卷中卷。
那么,首先,我们做任何事情,都需要有一个目标,有目标才会有方向,有目标才会有动力,有目标才会有人生的意义。所以第一步,我们要制定目标!
完整视频教程地址
一、制定目标
1、选择 “合理” 目标
之所以定下这么一个目标,是想让自己养成一个刷题的习惯,七天以后就会有自驱力!这样一个看似不可能完成的目标,一旦完成,那你将 举世无双,所向披靡,神挡杀神,佛挡杀佛!(这里配上一个御剑飞行的 BGM效果会更好)
首先,当然是好好睡一觉啦,补充一下睡眠,毕竟没有一个好身体,又如何一直坚持刷题呢?!
2、坚持下定决心
不!想当年 匡衡凿壁借光,勾践卧薪尝胆,班超投笔从戎,韩信胯下之辱,项羽破釜沉舟,岳飞精忠报国, 更有孙敬“头悬梁”,苏秦“锥刺股”,以及 司马光砸缸!
你这个年龄怎么能睡觉?!你这个年龄怎么睡得着的?!既然有了目标,就要制定计划!
二、制定计划
1、平均刷题法
所谓平均刷题法,就是 100 道题,分九天,每天平均刷11题,最后一天多刷一题。方案如下:
第1天 | 第2天 | 第3天 | 第4天 | 第5天 | 第6天 | 第7天 | 第8天 | 第9天 |
---|---|---|---|---|---|---|---|---|
11 | 11 | 11 | 11 | 11 | 11 | 11 | 11 | 12 |
但是我不推荐用这种方法,因为其实很多人都是三天热度,后面热度下去了根本坚持不下去。
2、跌宕起伏法
所谓跌宕起伏法,就是 今天刷7道,明天刷15道,后天再刷7道,以此类推……方案如下:
第1天 | 第2天 | 第3天 | 第4天 | 第5天 | 第6天 | 第7天 | 第8天 | 第9天 |
---|---|---|---|---|---|---|---|---|
7 | 15 | 7 | 15 | 7 | 15 | 7 | 15 | 12 |
这种方法,可以尝试,但是我有更好的办法,那就是!
3、先苦后甜法
所谓先苦后甜法,就是今天刷 25 道,明天刷 20 道,后天刷 15 道,然后每天 7 道,最后一天只需要刷 5 道。方案如下:
第1天 | 第2天 | 第3天 | 第4天 | 第5天 | 第6天 | 第7天 | 第8天 | 第9天 |
---|---|---|---|---|---|---|---|---|
25 | 20 | 15 | 7 | 7 | 7 | 7 | 7 | 5 |
这是基于三天热度来考虑的,趁热度最高的时候,多刷点题,三天过去,刷掉一大半,后面没有理由不坚持下去!然后,我们就要开始收集题目了。
三、收集题目
1、第一步:选择 [排序] 标签
我们既然是要刷排序的题,当然要先把排序的题都先找出来。官方分类下,目前有 257 道排序题。
2、第二步:选择 [简单] 标签
先刷简单题,再刷难题,容易增加信心 和 逐步打开思路。
3、第三步:选择 [通过率] 降序排列
一般通过率高的题,相对较为简单,所以我们优先选择通过率高的题。
4、第四步:整理出表
按照通过率降序,将所有题目分散到10天,先收集第一天,再收集第二天,然后第三天,第四天。
这里给大家介绍一个技巧,剑指Offer II 的题目一般都是力扣原题改编,所以很多会有两道一样的题,更有甚者,会有三道题。所以做出一道,就能过三道,不愧是我!
1)这是第一天的
2)这是第二天的
3)这是第三天的
4)这是第四天的
5)这是第五天的
6)这是第六天的
7)这是第七天的
8)这是第八天的
9)这是第九天的
四、学习刷题
首先,我们需要了解一下排序,排序是用来干什么的?
对于数字类型的数组,排序就是把它们按照一定规则重新排列。
1、排序规则
排序规则是写代码的人定的,常见的排序规则就是 递增排序、递减排序,当然也有其它变种,例如 偶数排前面,奇数排后面 等等。
2、排序算法
常见的排序算法总共有十来种,入门的排序算法主要有 冒泡排序、选择排序、插入排序;进阶的排序算法主要有 归并排序、希尔排序、快速排序;如果有余力,可以看一下 基数排序、计数排序 和 桶排序。
这些都不用学!!!
3、排序函数
没错,你没有听错!
接下来的才是重点,我们要刷的100道排序题,完全用不到上面的算法,也就是说你统统不用学!因为系统已经给我们实现了算法,我们只需要调用就能把一个数组排好序了!
她就是qsort
。
当然啦,如果求知欲很强,还是建议学习一下,毕竟大家都会,你不会,其实也没有什么关系啦!
4、排序函数怎么用
首先,我们需要告诉程序需要排序的数组是什么;
然后,我们需要告诉程序需要排序的数组的长度是多少;
接着,告诉它每个待排序元素的字节大小;
最后,告诉它递增还是递减。
C语言给我们提供了一个回调函数,通过实现这个回调函数,我们就能告诉程序我们要递增排序还是递减排序,它的声明如下:
int cmp(const void *a, const void *b);
我们只需要实现这个回调函数即可。如果你不懂指针,那么你只需要记住这样是递增排序;
int cmp(const void *a, const void *b)
return *(int *)a - *(int *)b;
这样是递减排序!
int cmp(const void *a, const void *b)
return *(int *)b - *(int *)a;
就可以了!这两段代码的区别就是 a 和 b 换了一个位置,记住就好啦~~
五、开始刷题
1、LeetCode零基础指南
我推荐一开始不要看书。对于程序员来说,实践才是最重要的,你在敲代码的时候一定是在电脑边,所以可以网上找一些算法资料会比看书更有用。比如下面这个专栏就是为力扣零基础的玩家量身订做的:
这个专栏主要讲解了一些 LeetCode 刷题时的一些难点和要点,主要分为以下几个章节,并且会持续补充一些有关于方法论的文章。文章有试读,可以简单先看一看试读文章。
2、排序专题链接
第几天 | 链接 |
---|---|
一 | 25题 |
二 | 20题 |
三 | 15题 |
四 | 7题 |
五 | 7题 |
六 | 7题 |
七 | 7题 |
八 | 7题 |
九 | 5题 |
六、算法专栏推荐
专栏 | 定位 | 适宜人群 |
---|---|---|
「 光天化日学C语言 」 | 「 入门 」 | 没有任何语言基础 |
「 LeetCode零基础指南 」 | 「 初级 」 | 零基础快速上手力扣 |
「 C语言入门100例 」 | 「 中级 」 | 零基础持续C语言练习教程 |
「 算法零基础100讲 」 | 「 高级 」 | 零基础持续算法练习教程 |
「 画解数据结构 」 | 「 高级 」 | 「 推荐 」 数据结构动图教程 |
「 算法进阶50讲 」 | 「 资深 」 | 进阶持续算法练习教程 |
「 LeetCode算法题集汇总 」 | 「 资深 」 | 全面的力扣算法题练习集锦 |
「 夜深人静写算法 」 | 「 资级 」 | 竞赛高端算法集锦 |
七、配套福利赠送
语言入门:《光天化日学C语言》(示例代码)
语言训练:《C语言入门100例》试用版
数据结构:《画解数据结构》源码
算法入门:《算法入门》指引
算法进阶:《夜深人静写算法》算法模板
以上是关于视频解说:如何快速高效的刷算法题 —— 排序专题的主要内容,如果未能解决你的问题,请参考以下文章