无论是做机器学习、深度学习、自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理、掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版!而且在 GitHub 上已经收获了近 1k 的赞了!

首先放上该笔记的 GitHub 地址:

https://github.com/Dairongpeng/algorithm-note

简介

该开源项目主要内容包括:数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现。作者是“左神”,通过算法课笔记记录,整理一份尽可能还原网课的笔记,还包括代码的实现,可方便读者当成工具书便于查询。

目录

该项目总共包含 24 节内容,每一节内容都配备了笔记和代码实现。

同时,作者提供了 GitHub Page 阅读页面,提高了友好交互性:

https://dairongpeng.github.io/algorithm-note/

例如,我们来看第 1 节的内容。

第 1 节介绍的是时间复杂度、空间复杂度、排序、异或运算。主要包括:时间复杂度、空间复杂度、常数项时间复杂度、算法最优解、常见时间复杂度、算法和数据结构脉络 、认识对数器、认识二分法 、认识异或运算。

作者对每个知识点都有简明扼要的概括和总结。

除此之外,像排序算法还有相应的示例代码,例如我们最常见的冒泡排序:

package class01;import java.util.Arrays;public class Code02_BubbleSort {public static void bubbleSort(int[] arr) {if (arr == null || arr.length < 2) {return;}// 0 ~ N-1// 0 ~ N-2// 0 ~ N-3for (int e = arr.length - 1; e > 0; e--) { // 0 ~ efor (int i = 0; i < e; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}}}// 交换arr的i和j位置上的值public static void swap(int[] arr, int i, int j) {arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];}// for testpublic static void comparator(int[] arr) {Arrays.sort(arr);}// for testpublic static int[] generateRandomArray(int maxSize, int maxValue) {int[] arr = new int[(int) ((maxSize + 1) * Math.random())];for (int i = 0; i < arr.length; i++) {arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());}return arr;}// for testpublic static int[] copyArray(int[] arr) {if (arr == null) {return null;}int[] res = new int[arr.length];for (int i = 0; i < arr.length; i++) {res[i] = arr[i];}return res;}// for testpublic static boolean isEqual(int[] arr1, int[] arr2) {if ((arr1 == null && arr2 != null) || (arr1 != null && arr2 == null)) {return false;}if (arr1 == null && arr2 == null) {return true;}if (arr1.length != arr2.length) {return false;}for (int i = 0; i < arr1.length; i++) {if (arr1[i] != arr2[i]) {return false;}}return true;}// for testpublic static void printArray(int[] arr) {if (arr == null) {return;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();}// for testpublic static void main(String[] args) {    int testTime = 500000;int maxSize = 100;int maxValue = 100;boolean succeed = true;for (int i = 0; i < testTime; i++) {int[] arr1 = generateRandomArray(maxSize, maxValue);int[] arr2 = copyArray(arr1);bubbleSort(arr1);comparator(arr2);if (!isEqual(arr1, arr2)) {succeed = false;break;}}System.out.println(succeed ? "Nice!" : "Fucking fucked!");int[] arr = generateRandomArray(maxSize, maxValue);printArray(arr);bubbleSort(arr);printArray(arr);}}

整体的阅读体验很不错!

希望这份《algorithm-note》算法笔记中文版对你有所帮助!最后,再放上该开源项目的 GitHub 地址:

https://github.com/Dairongpeng/algorithm-note


推荐阅读

(点击标题可跳转阅读)

干货 | 公众号历史文章精选

我的深度学习入门路线

我的机器学习入门路线图

重磅

AI有道年度技术文章电子版PDF来啦!

扫描下方二维码,添加 AI有道小助手微信,可申请入群,并获得2020完整技术文章合集PDF(一定要备注:入群 + 地点 + 学校/公司。例如:入群+上海+复旦

长按扫码,申请入群

(添加人数较多,请耐心等待)

感谢你的分享,点赞,在看三  

《algorithm-note》算法笔记中文版正式发布!相关推荐

  1. 【算法】《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  2. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...

    来源:专知本文为资源,建议阅读5分钟本文为你分享<算法笔记>中文版. https://github.com/Dairongpeng/algorithm-note 目录概览 第一节 复杂度. ...

  3. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  4. 【算法笔记题解】PAT A.1095 Cars on Campus (30 分)

    前言 今天不开心就撸了一道PAT的题. 所有的合集相关源码我都更新在gitee上了需要自取xingleigao/study - Gitee.com 题目描述 1095 Cars on Campus ( ...

  5. 数据结构与算法笔记 - 绪论

    数据结构与算法笔记 - 绪论 1. 什么是计算 2. 评判DSA优劣的参照(直尺) 3. 度量DSA性能的尺度(刻度) 4. DSA的性能度量的方法 5. DSA性能的设计及其优化 x1. 理论模型与 ...

  6. 数据结构与算法笔记(十五)—— 散列(哈希表)

    一.前沿 1.1.直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术.假设某应用要用到一个动态集合,其中每个元素都有一个取自全域U={0,1,-,m-1)的关键字,此处m是一个不很大 ...

  7. java 寻找和为定值的多个数_算法笔记_037:寻找和为定值的两个数(Java)

    1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和 ...

  8. 算法笔记 简单贪心(月饼问题)

    ** 概念 ** 贪心法是求解一类最优问题的方法,它总是考虑当前状态下局部最优(或较优)的策略,来使全局的结果达到最优(或较优).显然,如果采取较优而非最优的策略(最优策略可能不存在或是不易想到),得 ...

  9. 《算法笔记》——基础篇习题选择结构

    <算法笔记>--基础篇习题 第二章 C/C++快速入门--2.3选择结构 [习题A] 一元二次方程求根 Problem Description Thinking Notes Code Im ...

最新文章

  1. 复制数据表的两种情况。
  2. mongo下面总是缺少那么几个好用的工具--------试试这个吧-----MongoDB管理工具
  3. 对方不想和你说话 php,对方不想和你聊天的表现,遇到后赶紧放弃
  4. 【算法】快速选择算法 ( 数组中找第 K 大元素 )
  5. 下载Hibernate中文参考手册2.1版
  6. 关于安卓调用C#的WebService上传图片问题(不使用ksoap2)
  7. 计算机操作员实操高级试题,计算机操作员高级实操(以往考过,可做平时练习素材)答题.doc...
  8. 软件测试 学习之路 计算机基础
  9. 亚马逊创始人下月将乘自家火箭进入太空 亲弟弟同行
  10. sql limit 子句_SQL Join子句介绍和概述
  11. PDO NOsuch file 将DNHOST修改
  12. Mac下Alt键配置
  13. 关于单链表中temp.next、head.next的理解
  14. 质量管理三个概念:QC、QA和QM,你能分得清吗?
  15. 关于BIOS加载BOOT.S的经典解答
  16. 企业微信自建应用审批接口开发
  17. mvc原理和mvc模式的优缺点
  18. 上海旅游-徐家汇教堂
  19. 数学建模--综合评价方法
  20. #Geek Talk# The Tech Trend (AI、Blockchain and IoT)

热门文章

  1. Angular基础(五) 内建指令和表单
  2. leetcode 【 Unique Paths 】python 实现
  3. Css3-锚链接和伪类tartet
  4. HRSP热备份路由协议(思科私有协议)
  5. StatisticalOutlierRemoval:离群点移除
  6. RecSys 2016总结
  7. 算法/数据工程师必备技能
  8. Python数据格式:%s字符串,%d整型,%f浮点型
  9. intellij 快捷键整理
  10. angular学习笔记(十九)-自定义指令修改dom