生活随笔
收集整理的這篇文章主要介紹了
【算法】《algorithm-note》算法笔记中文版正式发布!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
無論是做機器學習、深度學習、自然語言處理還是其它領域,算法的重要性不言而喻!吃透算法底層原理、掌握算法數學推導和代碼實現,對提高自己的硬核實力來說非常重要!今天給大家推薦一個超贊的開源算法筆記!中文版!而且在 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基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻
本站qq群851320808,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【算法】《algorithm-note》算法笔记中文版正式发布!的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。