简单排序算法(冒泡排序、插入排序)大约需要一 n个2排序步骤n个对象,而最佳通用算法(堆排序、合并排序)大约需要b条 n个 日志[n个]排序步骤。显示优化算法总是用更少的时间对足够大的对象集合进行排序:
某些特殊算法(计数排序、基数排序)可以运行在c(c) n个时间。当可以使用时,这些算法甚至比优化算法更快:
可视化三个时间尺度的增长:
在冒泡排序中,如果相邻的邻居出现问题,则会进行比较和交换。经过一次n个-1比较一下,最大的元素在末尾。然后在剩余时间重复该过程n个-1元素,依此类推,直到一开始只剩下两个元素。如果比较和交换需要c(c)步骤,排序的总步骤数如下:
多项式仅由二次项渐近逼近:
在合并排序中,元素列表被分成两部分,每一半被排序,然后这两部分被合并。因此,时间T型[n个]排序将是某个恒定时间的总和b条计算中间值,2吨[n个/2]对每一半和一些倍数进行排序一 n个组合两部分的元素数量:
解递推方程求时间t吨进行排序n个元素:
此表达式仅由表达式中的最后一项渐近逼近:
旅行售货员问题(TSP)包括寻找连接的最短路径城市。简单的算法是尝试所有路线。持有的–卡普算法将其改进为步骤。展示一下因此,持有–卡普算法更快:
两种算法都表明TSP的复杂度等级并不比EXPTIME差,这是可以及时解决的问题.对于持有–卡普,使用对一些人来说足够:
对于阶乘,有必要使用高次多项式,例如:
近似解决方案见因此近似TSP是多项式时间内可解问题的复杂度类P。任何多项式算法都比指数算法快,或者: