当前位置: 首页 > 科技观察

数据结构和算法必知的50个代码实现

时间:2023-03-20 13:39:18 科技观察

今天在GitHub上发现了一个很好的项目,目前有4700+star,项目主要讲数据结构和算法,有50个多语言的代码实现。实现语言有c++、c#、go、java、javascript、object-c、python、scala、swift,还有世界最著名的语言php。地址:https://github.com/wangzheng0822/algo涉及内容如下:数组实现一个支持动态扩容的数组,实现一个固定大小的有序数组,支持动态增删改查操作,以及实现将两个有序数组组合成一个有序数组Array链表实现单链表、循环链表、双链表,支持增删操作。实现单链表反转。将两个有序链表合并为一个有序链表。实现链表的中间节点栈。使用数组实现顺序堆栈。链栈编程模拟实现浏览器的前向后向功能。用数组实现顺序队列。用链表实现链式队列。用递归编程实现循环队列。实现斐波那契数列求值f(n)=f(n-1)+f(n-2)编程求阶乘n!编程实现对一组数据集合的全排列排序实现归并排序、快速排序、插入排序、冒泡排序、选择排序和程序实现O(n)时间找到一组数据内的第K大元素复杂度二分查找对有序数组实现二分查找算法实现模糊二分查找算法(比如第一个元素大于等于给定值)哈希表实现基于链表方法的解决方案哈希表对于冲突问题实现了LRU缓存消除算法。该字符串实现了一个字符集。只包含a到z的26个英文字母的Trie树实现了一个简单的字符串匹配算法。二叉树实现了一个二叉搜索树,支持插入、删除和搜索操作,实现在二叉搜索树中搜索一个节点的后继和前驱节点。实现二叉树的前中后序,逐层遍历堆。实现小顶堆、大顶堆、优先级队列实现堆排序利用优先级合并K个有序数组找到一组动态数据集的TopK图实现有向图、无向图的邻接矩阵和邻接表表示,weightedgraphs,andunweightedgraphs实现图的深度优先表示搜索,广度优先搜索实现Dijkstra算法,A*算法实现拓扑排序Kahn算法,DFS算法回溯使用回溯算法解决八皇后问题使用回溯解决0-1背包问题的算法分而治之利用分而治之算法求出一组数据的逆序数字0-1背包问题的最小路径和规划动态规划实现Levenstein的最短编辑距离编程实现求两个字符串的最长公共子序列编程实现最长自增唱数据序列的子序列看了c++和java,写的不错,编码风格也很好。让我们学习吧。不懂算法的程序员只是码农。