Giter Club home page Giter Club logo

learn-algorithms's Introduction

#The file is in Chinese

算法虐我千百遍,我待算法如初恋

这里的内容是我学习算法过程的一些记录,希望能一直坚持下去。

学习方法

  • 把所有经典算法写一遍
  • 看算法有关源码
  • 加入算法学习社区,相互鼓励学习(加我vx:tiger-ran, 备注入群理由, 拉你入群)
  • 看经典书籍
  • 刷题

基本数据结构和算法

这些算法全部自己敲一遍:

  • 链表
  • 双向链表

数组和链表结构是基础结构,散列表、栈、队列、堆、树、图等等各种数据结构都基于数组和链表结构实现。

  • 队列
  • 堆栈
  • 散列函数
  • 碰撞解决
  • 图的存储结构和基本操作(建立,遍历,删除节点,添加节点)
  • 最小生成树
  • 拓扑排序
  • 关键路径
  • 最短路径: Floyd,Dijkstra,bellman-ford,spfa

交换排序算法

  • 冒泡排序
  • 插入排序
  • 选择排序
  • 希尔排序
  • 快排
  • 归并排序
  • 堆排序

线性排序算法

  • 桶排序
  • 哈希表: O(1) hashtable实现参考这里
  • 有序表查找:二分查找
  • 顺序表查找:顺序查找, 复杂度O(N)
  • 分块查找: 块内无序,块之间有序;可以先二分查找定位到块,然后再到中顺序查找
  • 动态查找: 二叉排序树,AVL树,B- ,B+(这里之所以叫 动态查找表,是因为表结构是查找的过程中动态生成的)

这是一个算法题目合集,题目是我从网络和书籍之中整理而来,部分题目已经做了思路整理。问题分类包括:

  • 字符串
  • 堆和栈
  • 链表
  • 数值问题
  • 数组和数列问题
  • 矩阵问题
  • 二叉树
  • 海量数据处理
  • 智力思维训练
  • 系统设计

还有部分来自算法网站和书籍:

  • 九度OJ
  • leetcode
  • 剑指offer
  • Hash映射/分而治之
  • Bitmap
  • Bloom filter(布隆过滤器)
  • Trie树
  • 数据库索引
  • 倒排索引(Inverted Index)
  • 双层桶划分
  • 外排序
  • simhash算法
  • 分布处理之Mapreduce
  • YYCache
  • cocos2d-objc
  • bitcoin
  • geohash
  • kafka
  • nginx
  • zookeeper
  • ...

15个经典基础算法

推荐阅读

刷题必备

  • 《剑指offer》
  • 《编程之美》
  • 《编程之法:面试和算法心得》  
  • 《算法谜题》 都是思维题

基础

  • 《编程珠玑》Programming Pearls
  • 《编程珠玑(续)》
  • 《数据结构与算法分析》
  • 《Algorithms》 这本近千页的书只有6章,其中四章分别是排序,查找,图,字符串,足见介绍细致

算法设计

  • 《算法设计与分析基础》
  • 《算法引论》 告诉你如何创造算法 断货
  • 《Algorithm Design Manual》算法设计手册 红皮书
  • 《算法导论》 是一本对算法介绍比较全面的经典书籍
  • 《Algorithms on Strings,Trees and Sequences》
  • 《Advanced Data Structures》 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树 600块

延伸阅读

  • 《深入理解计算机系统》
  • 《TCP/IP详解三卷》
  • 《UNIX网络编程二卷》
  • 《UNIX环境高级编程:第2版》
  • 《The practice of programming》 Brian Kernighan和Rob Pike
  • 《writing efficient programs》 优化
  • 《The science of programming》 证明代码段的正确性 800块一本

参考链接和学习网站

基本算法演示

http://sjjg.js.zwu.edu.cn/SFXX/sf1/sfys.html
http://www.cs.usfca.edu/~galles/visualization/Algorithms.html

编程网站

网课

高级数据结构和算法 北大教授张铭老师在coursera上的课程。完成这门课之时,你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构,并结合内排序、外排序、检索、索引有关的算法,高效地解决现实生活中一些比较复杂的应用问题。当然coursera上也还有很多其它算法方面的视频课程。

算法设计与分析 Design and Analysis of Algorithms 由北大教授Wanling Qu在coursera讲授的一门算法课程。首先介绍一些与算法有关的基础知识,然后阐述经典的算法设计**和分析技术,主要涉及的算法设计技术是:分治策略、动态规划、贪心法、回溯与分支限界等。每个视频都配有相应的讲义(pdf文件)以便阅读和复习。

其它

OI Wiki 主要内容是 OI/ACM-ICPC 编程竞赛 (competitive programming) 相关的知识整理, 包括基础知识、常见题型、解题思路以及常用工具等内容。

labuladong 的算法小抄 作者整理了很多的解题套路框架,看完获益良多

联系

@移动开发小冉

learn-algorithms's People

Contributors

aravindveluri avatar firebroo avatar ir1d avatar jessonzh avatar nonstriater avatar purp1e avatar zhisheng17 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learn-algorithms's Issues

求算法指导

本人目前在做iOS 开发 虽然没毕业 但是评的职称也是高级工程师 ,做过javaEE ,数据结构接触较少。 想在今年毕业的时候去阿里面试 ,大公司一般对算法要求较高 ,想专门学习下。
特意来问下初级的学习路线是 是按照 你推荐的基本初级书籍开始学还是直接从 代码层面看起。 或者有没有好的学习路线推荐

能否提供付费答疑?

我是 https://wen-ma.com 的开发者,请问能否提供付费答疑?

读者学习过程中遇到困难,向您支付50元,获得您20分钟的一对一帮助。

您可将网站的 定向提问链接 放在README.md中,方便读者直接对您提问。

我也不知道这算不算是广告,如果打扰了请批评指正。

哈哈

你好作者 有一些问题想向您探讨 一下 期待你的回复

一次错误

链表那里struct Entry *next,prev; 这里prev应该是个指针吧?应该这么声明吧,struct Entry *next, *prev;

git clone 你的url windows-10-x64报错

error: invalid path '4 Tree/1-二叉树 /btree.c'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
现象是 本地目录下的所有文件自动被delete.

git clone 异常

$ git clone https://github.com/nonstriater/Learn-Algorithms.git
Cloning into 'Learn-Algorithms'...
remote: Enumerating objects: 831, done.
remote: Total 831 (delta 0), reused 0 (delta 0), pack-reused 831
Receiving objects: 100% (831/831), 3.30 MiB | 337.00 KiB/s, done.
Resolving deltas: 100% (416/416), done.
error: unable to create file Binary Tree/1-二叉树 /btree.c: No such file or directory
fatal: cannot create directory at 'Binary Tree/1-二叉树 /btree': No such file or directory
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

我想提一些小建议

先赞一下!!!

这个 repo 目前 star 也不少了,是否有考虑把这个 repo 做成一个算法和数据结构学习的地方?

  1. 目录改成英文的吧,也许会有老外来也不一定
  2. 可以让大家参与进来,把每个数据结构和算法列出让大家认领
  3. 每个数据结构和算法,要配有相应的思路、图片、代码
  4. 可以做成一个算法搜索网站,让大家可以直接搜索,查看

在学习数据结构和算法的路上很少人可以坚持下来,那么大家一起来不就行了,你说是吧!哈哈

关于仓库的疑问

我想请问一下,刚才在看仓库的时候发现没有代码,所以请问一下后期是否会有代码上传?还是说只是记录算法笔记用的? 谢谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.