Skip to content

Latest commit

 

History

History
166 lines (107 loc) · 4.08 KB

README.md

File metadata and controls

166 lines (107 loc) · 4.08 KB

AlgorithmDemo50

Top 50 you must be to know about knowledge of algorithm.

English:

Array

  1. Implement an array that can extend capacity automatically
  2. Implement an ordered array include function of adding,removing and updating
  3. Combine two ordered arrays into one ordered array

Linked List

  1. Implement a linked list,a circle linked list and two-way linked list all including adding and deleting function
  2. Reverse linked list
  3. Combine two ordered linked list into one
  4. Query a middle of node in linked list
  5. Swap node in Pairs
  6. Linked list cycle checked

Stack

  1. Implementing a stack by array
  2. Implementing a stack by linked list
  3. Simulating a browser with function of forward and back by stack

Queue

  1. Implementing a queue by array
  2. Implementing a queue by linked list
  3. Implementing a circular queue

Recursion

  1. Evaluation by Fibonacci
  2. Factorial implementation
  3. To permute all on an array

Sort

  1. Implementing a Bubble Sort Algorithm
  2. Implementing a Selection Sort Algorithm
  3. Implementing an insertion sort algorithm
  4. Implementing a quick sort algorithm
  5. Implementing a merge sort algorithm
  6. Finding out Kth element with an array in O(n)
  7. Implementing a sorting by heap
  8. Implementing a radix sort algorithm

BinarySearch

  1. Implementing a binary search algorithm
  2. Implementing a vague binary search algorithm(the first element greater than or equal target value)

Hash Table

  1. Implementing a hash table that solving conflict base on linked list

BinarySearchTree

  1. To recurse the binary tree

String

  1. to match String by BF(Bruce Force) Algorithm
  2. To match Strings using BM Algorithm
  3. To insert and find the strings by algorithm of trie tree

Systematic Planing

  1. To solve the problem of 0 or 1 bag by recalling method
  2. To solve the problem of 0 or 1 bag by dynamic planing method with two dimensional array
  3. To solve the problem of 0 or 1 bag by dynamic planing method with a dimensional array
  4. To solve the problem of the shortest path from a[0][0] to a[i][j] by state diagram method

Topological Sort

  1. To implement a topological sort by Kahn

Bitmap

  1. Bitmap structure

Other

  1. To implement a hanoi algorithm

Chinese:

数组

  1. 实现一个支持动态扩容的数组
  2. 实现一个大小固定的有序数组,支持动态增删改操作
  3. 实现两个有序数组合并成一个有序数组

链表

  1. 实现单链表,循环链表,双向链表,支持增删操作
  2. 单链表反转
  3. 实现两个有序的链表合并为一个有序链表
  4. 实现求链表的中间节点
  5. 实现结点的两两交换
  6. 链表环检测

  1. 用数组实现一个顺序栈
  2. 用链表实现一个链式栈
  3. 编程模拟实现一个浏览器的前进、后退功能

队列

  1. 用数组实现一个顺序队列
  2. 用链表实现一个链式队列
  3. 实现一个循环队列

递归

  1. 编程实现斐波那契数列求值
  2. 编程实现求阶乘 n!
  3. 编程实现一组数据集合的全排列

排序

  1. 实现归并排序,快速排序,插入排序,冒泡排序,选择排序,基数排序
  2. 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素
  3. 堆排序实现

二分查找

  1. 实现一个有序数组的二分查找算法
  2. 实现模糊二分查找算法(比如大于等于给定值的第一个元素)

散列表

  1. 实现一个基于链表法解决冲突问题的散列表

二叉树

  1. 二叉树的遍历

字符串相关

  1. 使用 BF(暴力破解)算法来实现字符串匹配功能
  2. 使用 BM 算法来实现字符串匹配功能
  3. 使用 Trie 树实现字符串的插入和查找

动态规划

  1. 使用回溯算法解决 0 或 1 背包问题
  2. 使用二维数组方式实现动态规划来解决 0 或 1 背包问题
  3. 使用一维数组方式实现动态规划来解决 0 或 1 背包问题
  4. 使用状态转移表法解决从 a[0][0] 到 a[i][j] 的最短路径问题

拓扑排序

  1. 使用 Kahn 算法实现拓扑排序

位图

  1. 位图数据结构

其它

  1. 实现一个汉诺塔