分享|2021秋招算法总结5-排序算法篇
21243
2020.12.28
2021.08.09
发布于 未知归属地

置顶科普

年份是毕业年份,2021是指2021年毕业,不是2021年面试

鲂的2021秋招算法总结目录(已完结)

1. 分享|2021秋招算法总结1-DFS篇
2. 分享|2021秋招算法总结2-BFS篇
3. 分享|2021秋招算法总结3-链表篇
4. 分享|2021秋招算法总结4-二叉树篇
5. 分享|2021秋招算法总结5-排序算法篇
6. 分享|2021秋招算法总结6-字符串篇

  1. 分享|2021秋招算法总结7-双指针篇
  2. 分享|2021秋招算法总结8-哈希篇
  3. 分享|2021秋招算法总结9-位运算
  4. 分享|2021秋招算法总结10-数组篇
  5. 分享|2021秋招算法总结11-动规篇
  6. 分享|2021秋招算法总结12-栈篇

鲂的2021秋招经验总结(不定时更新)

1. 分享|2021届毕业生秋招经验总结1-岗位类别介绍
2. 分享|2021届毕业生秋招经验总结2-如何选择offer

鲂的面经整理目录(已完结)

1. 美团金融|安卓客户端|面经|offer|2021届秋招|
2. 拼多多|客户端开发|面经|offer|2021届秋招|
3. 网易云音乐|安卓客户端|面经|offer|2021届秋招|
4. 阿里巴巴|客户端开发|面经|2021届秋招|
5. 花旗银行|软件工程师|面经|offer|2021届秋招|
6. 字节跳动|客户端开发|面经|2021届秋招|
7. 叠纸游戏|客户端开发|面经|2021届秋招|
8. 腾讯|客户端开发|面经|2021届秋招|
9. 360|安卓客户端|面经|offer|2021届秋招|
10. 作业帮|IOS客户端|面经|2021届秋招|
11. 滴滴|安卓客户端|面经|2021届秋招|
12. 百度|IOS客户端|面经|2021届秋招|
13. 快手|客户端开发|面经|2021届秋招|
14. 顺丰科技|安卓客户端|面经|offer|2021届秋招|

鲂的内推

1. 内推+校招秋招|美团金融服务平台|多项岗位|北京+上海

本篇概要

首先,各种排序算法必须要懂得基本步骤、时间复杂度(包括平均、最好和最坏)、空间复杂度、稳定性和复杂性等。
其次,需要用某种编程语言在本地编译器中将这些排序都跑起来。
最后,练习一些力扣中有关排序的变型题。

各种排序算法的类别

以下列写的是可能在笔试面试中遇到的排序算法的类别,为了增强大家的信息检索能力,此处不展开叙述,感兴趣的可以按关键词搜索,或者直接看我的笔记。

  1. 插入排序
  2. 希尔排序(缩小增量排序)
  3. 冒泡排序
  4. 快速排序、双路快排、三路快排
  5. 选择排序
  6. 堆排序
  7. 归并排序
  8. 桶排序
  9. 基数排序
  10. 计数排序

PS:当然还有其他排序啦,自己感兴趣可以自行搜索呀,本篇分类仅个人意见,自己感兴趣啥自己搜呗,不接受杠精指责。

学习各大排序算法的题

  1. 912. 排序数组:给你一个整数数组 nums,请你将该数组升序排列。

推荐学习链接:

插入排序

  1. 147. 对链表进行插入排序:对链表进行插入排序,有演示动画。

快速排序

以下题目是可以用快排,但不仅限于用快排。通常能用普通快排的题还可以用堆排和桶排。

  1. 基础版本:对int数组或char数组排序。
  2. 提升版本:给定一些由【,】或者空格或者【;】隔开的string字符串,将其中的内容按字典序排序,或者逆字典序排序。
  3. 剑指 Offer 45. 把数组排成最小的数:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
  4. 剑指 Offer 40. 最小的k个数面试题 17.14. 最小K个数:找出数组中最小的k个数。以任意顺序返回这k个数均可。
    提升:按升序或者降序的顺序返回这k个数。
  5. 215. 数组中的第K个最大元素:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
  6. 75. 颜色分类:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

堆排序

以下题目是可以用堆排,但不仅限于用堆排。通常可以用堆排的题也可以用快排和桶排。

  1. 347. 前 K 个高频元素:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
  2. 692. 前K个高频单词:给一非空的单词列表,返回前 k 个出现次数最多的单词。
  3. 973. 最接近原点的 K 个点:有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。
  4. 1167. 连接棒材的最低费用:会员题,可以用堆排。

归并排序

题目可能较难,学有余力的可以试试看。

  1. 剑指 Offer 51. 数组中的逆序对:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
  2. 315. 计算右侧小于当前元素的个数:给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。

桶排序

以上快排和堆排的题也都可以用桶排,这边列举的是一个用桶排比较方便的题目,其实题解区还有不用排序的做法。大家多看看不同题解,量力而行。

  1. 1122. 数组的相对排序:给你两个数组,arr1 和 arr2,arr2 中的元素各不相同。arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
  2. 621. 任务调度器:给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个相同种类的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的最短时间 。

结束语

排序算法在笔试面试中都是经常遇到的题目。在实际项目中,可能更多人选择直接用内库解决问题。但是在面试时候,面试官更感兴趣的是你对一些基础排序算法的理解,而不仅仅是简单的使用内库。就算你用内库很快的写完了,也许还会碰到面试官问你这个内库函数的基本原理是什么。我觉得面试者在面试前要尽可能的充分准备,多去思考一些深层次的东西,注重各大算法的基本原理和对比,而不是只用调用库函数,这样才能在面试中脱颖而出。

评论 (9)