计算机常用基础算法

来源:互联网 发布:宜家值得购买知乎 编辑:程序博客网 时间:2024/06/05 21:07

Algorithms playground for common questions solved in Java syntax.

This repository contains my solution for some common algorithms. I’ve created this repository to learn about algorithms and improve solving different common computer science problems. I’ll try to add more solutions if I have time :)

Each solved problem has a program written in Java. Every solution is tested and some problems contains more than one solution with different implementations.

You can check the solution executing tests inside tests directory. Some of this problems have been resolved using TDD.

Problems

Arrays

  • Clockwise print array - 顺时针打印数组

Commons

  • Hex conversion utility - 进制转换工具
  • Majority number - 大多数,超过一半的数
  • Maximum product - 最大乘积
  • TOPK algorithm - TOPK算法

Graph

  • Dijkstra algorithm - 迪杰斯特拉算法
  • [Directed graph depth first and breadth-first by adjacency table - 邻接表实现有向图深度优先和广度优先]
    (src%2Fmain%2Fjava%2Fcn%2Fcodepub%2Falgorithms%2Fgraph%2FDirectedGraphByAdjacencyList.java)
  • [Directed graph depth first and breadth-first by adjacency matrix - 邻接矩阵实现有向图深度优先和广度优先]
    (src%2Fmain%2Fjava%2Fcn%2Fcodepub%2Falgorithms%2Fgraph%2FDirectedGraphByAdjacencyMatrix.java)
  • Floyd warshall - 弗洛伊德算法
  • Kruskal - 克鲁斯卡尔算法
  • Prim - 普里姆算法
  • [Undirected graph depth first and breadth-first by adjacency table - 邻接表实现无向图深度优先和广度优先]
    (src%2Fmain%2Fjava%2Fcn%2Fcodepub%2Falgorithms%2Fgraph%2FUndirectedGraphByAdjacencyList.java)
  • [Undirected graph depth first and breadth-first by adjacency matrix - 邻接矩阵实现无向图深度优先和广度优先]
    (src%2Fmain%2Fjava%2Fcn%2Fcodepub%2Falgorithms%2Fgraph%2FUndirectedGraphByAdjacencyMatrix.java)

Matrix

  • Matrix multiplication - 方阵乘法

Multithread

  • Thread synchronization - 线程同步

Queue

  • Simple priority queue - 简单的优先级队列

Similarity

  • Words similarity by Tongyici CiLin - 基于同义词词林的词语相似度

Sorting Algorithms

  • Bubble sorting - 冒泡排序
  • Insert sorting - 插入排序
  • Quick sorting - 快速排序
  • SelectionSort sorting - 选择排序
  • Shell sorting - 希尔排序

Chinese to Spelling

  • Chinese to spelling - 中文转拼音

Stack

  • Analyzing brackets match - 判断括号是否匹配
  • Check stack sequence - 检查栈的弹出序列
  • Infix expression turn to postfix expression - 中缀表达式转后缀表达式
  • Maintain a minimum number of stacks - 保持最小数的栈
  • Postfix expression evaluation - 后缀表达式求值

Strings

  • Binary search - 二分查找
  • Combination - 组合
  • Jaccard similarity coefficient - 杰卡德相似度系数
  • Longest common subsequence - 最长公共子序列
  • Longest common substring 1 - 最长公共子串1
  • Longest common substring 2 - 最长公共子串2
  • Levenshtein distance - 编辑距离
  • Longest decreasing subsequence - 最长递减子序列
  • Pattern string match - 模式串查找
  • Permutation - 全排列
  • Reverse string - 反转字符串
  • Lexicographical - 字典序排序
  • Manacher algorithms - 最长回文字符串

Trees

  • Depth-first traversal of a binary tree - 二叉树的深度优先遍历
  • Get all path by given a number - 二叉树中结点值的和为输入整数的所有路径
  • Level binary tree traversal - 二叉树的层次遍历
  • Binary tree traversal - 二叉树的遍历
  • Verify sequence Of binary search tree - 验证二叉搜索树序列

Design Patterns

  • Deep clone - 深拷贝
  • Singleton - 单例
  • Static proxy - 静态代理
  • JDK dynamic proxy - JDK实现动态代理
  • CGLib dynamic proxy - CGLib实现动态代理

Author

  • Developed By Xu Wang
  • https://github.com/shijiebei2009/Algorithms

.

0 0