总结项目开发中需要使用到的算法。

算法复杂度

时间复杂度一般使用O(大写)表示,O(x)其中x表示函数f()。

O(1)

表示复杂度不随数据增长影响。(比如数组根据下标随机访问、哈希表)

O(n)

表示数据增长n倍复杂度也增长n倍。(比如单链表查找)

O(logN)

表示数据增长n倍,复杂度增长logn倍,log以2为底。即当数据增加256倍时,复杂度增加8倍。(比如二叉树查找,二分法查找)

O(Nlog)

表示数据增长n倍,复杂度增长n的logn倍。即当数据增加256倍时,复杂度增加256*8倍。(归并排序)

算法复杂度整理图

排序算法

参考

内部排序(使用内存)

插入排序

  1. 直接插入排序

  2. 希尔排序

选择排序

  1. 简单选择排序

  2. 堆排序

交换排序

  1. 冒泡排序

  2. 快速排序

归并排序

基数排序

外部排序(内存和外存结合使用)