《算法和数据结构》排序篇

前言

  「 简单题 」 懒得刷,「 中等题 」 看题解,「 困难题 」 坐一天。
  这是不是你目前的现状?如果是这样,那么,这很合理!额……
  今天这个教程,我将教会你如何重塑信心,东山再起,重夺刷题界的卷王卷中卷。
  那么,首先,我们做任何事情,都需要有一个目标,有目标才会有方向,有目标才会有动力,有目标才会有人生的意义。所以第一步,我们要制定目标!


完整视频教程地址

一、制定目标

1、选择 “合理” 目标

  

我们的目标是:九天刷完100道算法题!

  之所以定下这么一个目标,是想让自己养成一个刷题的习惯,七天以后就会有自驱力!这样一个看似不可能完成的目标,一旦完成,那你将 举世无双,所向披靡,神挡杀神,佛挡杀佛!(这里配上一个御剑飞行的 BGM效果会更好)
  首先,当然是好好睡一觉啦,补充一下睡眠,毕竟没有一个好身体,又如何一直坚持刷题呢?!

2、坚持下定决心

  不!想当年 匡衡凿壁借光,勾践卧薪尝胆,班超投笔从戎,韩信胯下之辱,项羽破釜沉舟,岳飞精忠报国, 更有孙敬“头悬梁”,苏秦“锥刺股”,以及 司马光砸缸!

  你这个年龄怎么能睡觉?!你这个年龄怎么睡得着的?!既然有了目标,就要制定计划!

二、制定计划

在这里插入图片描述

1、平均刷题法

  所谓平均刷题法,就是 100 道题,分九天,每天平均刷11题,最后一天多刷一题。方案如下:

第1天第2天第3天第4天第5天第6天第7天第8天第9天
111111111111111112

  但是我不推荐用这种方法,因为其实很多人都是三天热度,后面热度下去了根本坚持不下去。

2、跌宕起伏法

  所谓跌宕起伏法,就是 今天刷7道,明天刷15道,后天再刷7道,以此类推……方案如下:

第1天第2天第3天第4天第5天第6天第7天第8天第9天
71571571571512

  这种方法,可以尝试,但是我有更好的办法,那就是!

3、先苦后甜法

  所谓先苦后甜法,就是今天刷 25 道,明天刷 20 道,后天刷 15 道,然后每天 7 道,最后一天只需要刷 5 道。方案如下:

第1天第2天第3天第4天第5天第6天第7天第8天第9天
252015777775

  这是基于三天热度来考虑的,趁热度最高的时候,多刷点题,三天过去,刷掉一大半,后面没有理由不坚持下去!然后,我们就要开始收集题目了。

三、收集题目

在这里插入图片描述

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零基础指南》🍠

  这个专栏主要讲解了一些 LeetCode 刷题时的一些难点和要点,主要分为以下几个章节,并且会持续补充一些有关于方法论的文章。文章有试读,可以简单先看一看试读文章。

(第一讲)导读
(第二讲)函数
(第三讲)循环
(第四讲)数组
(第五讲)指针
(第六讲)排序
(第七讲)贪心
(第八讲)矩阵
(第九讲)二级指针
(第十讲)简单递归

2、排序专题链接

开始刷题
第几天链接
25题
20题
15题
7题
7题
7题
7题
7题
5题

六、算法专栏推荐

专栏定位适宜人群
「 光天化日学C语言 」「 入门 」没有任何语言基础
「 LeetCode零基础指南 」「 初级 」零基础快速上手力扣
「 C语言入门100例 」「 中级 」零基础持续C语言练习教程
「 算法零基础100讲 」「 高级 」零基础持续算法练习教程
「 画解数据结构 」「 高级 」「 推荐 」 数据结构动图教程
「 算法进阶50讲 」「 资深 」进阶持续算法练习教程
「 LeetCode算法题集汇总 」「 资深 」全面的力扣算法题练习集锦
「 夜深人静写算法 」「 资级 」竞赛高端算法集锦

七、配套福利赠送

语言入门《光天化日学C语言》(示例代码)
语言训练《C语言入门100例》试用版
数据结构《画解数据结构》源码
算法入门《算法入门》指引
算法进阶《夜深人静写算法》算法模板

👇🏻 添加 博主 参加 九日集训👇🏻
  • 92
    点赞
  • 298
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

英雄哪里出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值