EEKAlgorithms 0.2

EEKAlgorithms 0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后一次发布2014年12月

Stanislaw PankevichEvgeny Karkan维护。



  • Evgeny Karkan和Stanislaw Pankevich

EEKAlgorithms是一系列用Objective-C实现的计算机练习。数据结构、众所周知算法、CS奇趣,你叫什么吧!

别忘了关注该仓库;其内容将会频繁扩展和更新。

数组与列表

  1. 数组中和元素的最大值的索引。
  2. 同时找到最大和最小元素的索引。
  3. 在字符串数组中找到最长的字符串。
  4. 在字符串数组中找到最短的字符串。
  5. 数组反转。
  6. 两个数组的交集。
  7. 两个数组的并集(移除重复项)。
  8. 根据某些键的两个数组的并集(移除重复项)。
  9. 找到重复项。
  10. 包含N个唯一/非唯一随机对象的数组。
  11. 检查数组是否已经排序。
  12. 数组洗牌(Fisher-Yates算法)。
  13. 数组元素的总和。
  14. 数组中每个元素出现的次数。

搜索算法

  1. 线性搜索。
  2. 二分搜索。

排序算法

  1. 冒泡排序。
  2. 希尔排序。
  3. 归并排序。
  4. 快速排序。
  5. 插入排序。
  6. 选择排序。
  7. 基数排序。
  8. 部分选择排序。
  9. 堆排序。

选择算法

  1. 快速选择。

字符串

  1. 回文还是非回文。
  2. 字符串反转。
  3. 单词计数。
  4. 字符串的排列。
  5. 每个字符(a-z)的出现次数。
  6. 在“干草堆”中找到“针”。
  7. 随机字符串。
  8. 两个字符串的连接。
  9. 在“干草堆”中找到第一个“针”的发生位置。
  10. 在“干草堆”中找到最后一个“针”的发生位置。
  11. 最长公共子序列。
  12. Levenshtein距离。
  13. KMP(Knuth-Morris-Pratt)。

数值算法

  1. 埃拉托斯特尼筛法。
  2. 最大公约数(GCD)。
  3. 最小公倍数(LCM)。
  4. 阶乘。
  5. 斐波那契数列(5种算法)。
  6. 数字总和。
  7. 二进制到十进制转换。
  8. 十进制到二进制转换。
  9. 快速幂。
  10. 数字反转。
  11. 偶数/奇数检查。
  12. 闰年检查。
  13. Armstrong数检查。
  14. 质数检查。
  15. 查找第N个质数。
  16. 交换两个NSInteger指针的值。
  17. 使用牛顿-拉夫森方法计算平方根。
  18. 将整数转换为其他数制(2,8,12,16)。
  19. 快速倒数平方根。

数据结构

  1. 栈(后进先出)。
  2. 队列(先进先出)。
  3. 双端队列。
  4. 链表。
    • DFS(深度优先搜索);
    • BFS(广度优先搜索);
    • MST(最小生成树 - Prim算法);
    • MST(最小生成树 - Kruskal算法);
    • 最短路径(Dijkstra算法);
    • 拓扑排序。
  5. 树。
  6. 二叉树
    • 先序遍历;
    • 中序遍历;
    • 后序遍历。
  7. 二叉搜索树(BST)。
  8. AVL树。
  9. 二叉堆。

问题

  1. 约瑟夫问题。
  2. 模偏问题。

几何学

  1. 按照到指定位置的距离排序的位置数组。
  2. 笛卡尔象限选择算法

递归

  1. 汉诺塔。

贡献

欢迎提拉取请求!但如果你要做出贡献,请首先开一个问题。

最初,编译的练习仅用于教育目的,没有意图成为最复杂最终解决方案,但它们确实意在作为你对算法及其优化进行深入研究的一个起点。

重要注意

Foundatoin框架已经包含了你在这里包含的大部分练习的工具和方法。感谢苹果在这方面所做的努力!但是……这是SPARTA!所以让我们动手试试,用最少的现有API实现酷的CS内容。

谢谢!

贡献者

特别感谢这些人为项目开发做出的贡献