玩转算法面试day01

1.对一组数据进行排序

根据数据的特征要求分析具体算法

1 含有大量重复元素
推荐三路快排

:很多语言的标注库中快排的基本实现都是三路快排【包括java】

2 数据都是独特的
推荐常用的快速排序
:快排非常依赖数组的随机存储

3 数据几乎有序【正确位置较近】
推荐插入排序
【例】银行事务处理的数据(几乎先发生先完成)

4.数据的取值范围非常有限
推荐计数排序
【例】学生成绩排序

5.是否需要稳定排序
推荐归并排序

6.数据存储使用链表存储
推荐归并排序

7 .内存小了,不足装入内存
推荐外排序算法

准备范围

1.不要轻视基础算法数据结构,只关注新颖特殊的题目

玩转算法面试day01_第1张图片
玩转算法面试day01_第2张图片
玩转算法面试day01_第3张图片
玩转算法面试day01_第4张图片

选择合适的OJ

online judge
在线判题系统

推荐leetcode
HackerRank

在学习和实践做题之间,掌握平衡

解决面试问题的整体思路

1.注意条件
【例】给定一个有序数组。。。。【二分查找】
【例】设计一个O(nlogn)的算法 【大概率分治法】
【例】无需考虑额外的空间【开辟额外的空间】
【例】数据规模大概是10000【设计O(n^2)的算法】

没有思路的时候

写几个测试用例,试验一下

不要忽视暴力解法。暴力法是思考的起点
【例】
玩转算法面试day01_第5张图片

你可能感兴趣的:(算法,面试)