官术网_书友最值得收藏!

Useful algorithms and data structures

Algorithmic improvements are especially effective in increasing performance because they typically allow the application to scale better with increasingly large inputs.

Algorithm running times can be classified according to their computational complexity, a characterization of the resources required to perform a task. Such classification is expressed through the Big-O notation, an upper bound on the operations required to execute the task, which usually depends on the input size.

For example, incrementing each element of a list can be implemented using a for loop, as follows:

    input = list(range(10))
for i, _ in enumerate(input):
input[i] += 1

If the operation does not depend on the size of the input (for example, accessing the first element of a list), the algorithm is said to take constant, or O(1), time. This means that, no matter how much data we have, the time to run the algorithm will always be the same.

In this simple algorithm, the input[i] += 1 operation will be repeated 10 times, which is the size of the input. If we double the size of the input array, the number of operations will increase proportionally. Since the number of operations is proportional to the input size, this algorithm is said to take O(N) time, where N is the size of the input array.

In some instances, the running time may depend on the structure of the input (for example, if the collection is sorted or contains many duplicates). In these cases, an algorithm may have different best-case, average-case, and worst-case running times. Unless stated otherwise, the running times presented in this chapter are considered to be average running times.

In this section, we will examine the running times of the main algorithms and data structures that are implemented in the Python standard library, and understand how improving running times results in massive gains and allows us to solve large-scale problems with elegance.

You can find the code used to run the benchmarks in this chapter in the Algorithms.ipynb notebook, which can be opened using Jupyter.

主站蜘蛛池模板: 左云县| 永年县| 伊金霍洛旗| 沁源县| 改则县| 宁夏| 蓬莱市| 三亚市| 屯留县| 汝南县| 迁西县| 潞西市| 泌阳县| 昔阳县| 改则县| 延寿县| 嘉义县| 辽阳市| 西畴县| 新余市| 中超| 吴川市| 威信县| 曲靖市| 永丰县| 麟游县| 阿图什市| 新乡市| 宜君县| 苗栗市| 玉环县| 武宣县| 九寨沟县| 阿克苏市| 青田县| 崇义县| 将乐县| 怀化市| 高要市| 孝义市| 广河县|