zoukankan      html  css  js  c++  java
  • 程序员必须掌握哪些算法?

    程序员必须掌握哪些算法?

    算法:

    1、排序算法:快速排序、归并排序、计数排序
    2、搜索算法:回溯、递归、剪枝
    3、图论:最短路径、最小生成树、网络流建模
    4、动态规划:背包问题、最长子序列、计数问题
    5、基础技巧:分治、倍增、二分法、贪心算法

    数据结构:

    1、数组和链表
    2、栈与队列
    3、树和图
    4、哈希表
    5、大/小跟堆,可并堆
    6、字符串:字典树、后缀树

    还可以在此基础上细分,例如单单排序算法就可以分为以下十种:

    imgimg

    对于学习算法,我推荐在力扣上刷题:

    力扣 (LeetCode) 官网 - 全球极客挚爱的技术成长平台leetcode-cn.com图标

    此外,推荐一个用动画的形式演示 LeetCode 上的题目的项目:

    https://github.com/MisterBooo/LeetCodeAnimationgithub.com

    例如基础的冒泡排序法演示如下:

    img

    选择排序法:

    img

    插入排序法:

    img

    希尔排序法:

    img

    归并排序法:

    img

    快速排序法:

    img

    堆排序:

    img

    计数排序:

    img

    桶排序:

    img

    基数排序:

    img

    该项目正在完善中,已经用动画的形式演示出了一下题目:

    汇总

    imgimg

    imgimg

    [MisterBooo/LeetCodeAnimationgithub.com]图标

    此外,再推荐一些免费的学习资源:

    在学习的时候,要想为什么要这样设计,优点在哪里,有什么改进方法,逐步通过这样的方式提升逻辑思维能力。不懂就查,找学习资料和相关解答,坚持学习。

    1. 算法学习 LintCode:https://www.lintcode.com/

    算法学习网站,上去每天刷两道算法题,走遍天下都不怕。

    2. 算法学习 LeetCode:https://leetcode.com/

    也是算法题网站,同上。

    3. 算法学习 LeetCode 中文站:https://leetcode-cn.com/

    这个是上面算法题网站的中文站点,英文不好的可以刷这个,英文好的推荐去刷英文网站的题目,还能提升英语能力。

    4. 中国大学MOOC网:https://www.icourse163.org/

    中国大学MOOC是由网易与高教社携手推出的在线教育平台,承接教育部国家精品开放课程任务,向大众提供中国知名高校的MOOC课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

  • 相关阅读:
    141. Linked List Cycle
    2. Add Two Numbers
    234. Palindrome Linked List
    817. Linked List Components
    《算法图解》之快速排序
    C++-对象指针的滥用
    C++学习书籍评价
    C++-随机数的产生
    Java-重载和重写区别剖析
    Qt- 图形界面应用程序的运行模式
  • 原文地址:https://www.cnblogs.com/TMesh/p/11730301.html
Copyright © 2011-2022 走看看