Python数据结构之 Big O

     学习课程:【Udemy高分付费课程】Python数据结构与算法 - 终极 Python 编码面试和计算机科学训练营

        在Python中,Big O表示法用于描述算法的时间复杂度,即算法运行时间与输入大小之间的关系;或空间复杂度,即算法运行时所占用的内存。

在处理时间复杂度和空间复杂度是有3个希腊字母:

        Ω--最佳速度    θ--平均速度   O--最坏情况

我们在讨论BigO时,总是在谈论最坏情况(Worst Case)

Python数据结构的时间复杂度
复杂度 名称 解释
O(1) 常数复杂度 无论输入数据量大小,算法的运行时间都是固定的。
O(log n) 对数复杂度 算法的运行时间随着输入数据量的增加而以对数方式增长,通常出现在高效的搜索算法中,如二分查找。
O(n) 线性复杂度 算法的运行时间随着输入数据量线性增长,例如遍历一个列表或数组。
O(n log n) 线性对数复杂度 常见于高效的排序算法,如快速排序和归并排序,其运行时间介于线性时间和平方时间之间。
O(n²) 平方复杂度 算法的运行时间随着输入数据量的平方增长,通常出现在包含嵌套循环的算法中。
O(2^n) 指数复杂度 算法的运行时间随着输入数据量呈指数增长,这类算法在处理大规模数据时效率极低。
O(n!) 阶乘复杂度 算法的运行时间随着输入数据量的阶乘增长,是最低效的复杂度类型之一,通常应避免。

Python数据结构之 Big O_第1张图片

Python中不同数据结构的基本操作也具有不同的Big O复杂度:

  • 列表(List)
    • 访问元素:O(1)
    • 在末尾添加或删除元素:O(1)
    • 在中间插入或删除元素:O(n)
    • 遍历列表:O(n)
  • 集合(Set)
    • 添加或删除元素:O(1)
    • 检查元素是否存在:O(1)
    • 集合运算(如并集、交集):O(min(m, n))
  • 字典(Dictionary)
    • 添加、删除或查找键值对:O(1)
    • 遍历字典:O(n)

Array Sorting Algorithms

排序算法 时间复杂度 空间复杂度
最佳情况(Bset) 平均情况(Average) 最差情况(Worst) 最差情况(Worst)
快速排序 Quciksort Ω(n log n) θ(n log n) O(n²) O(log n)
归并排序 Mergesort Ω(n log n) θ(n log n) O(n log n) O(n)

Timsort

结合插入和归并的优点

Ω(n) θ(n log n) O(n log n) O(n)
堆排序 Heapsort Ω(n log n) θ(n log n) O(n log n) O(1)
冒泡排序 Bubble Sort Ω(n) θ(n²) O(n²) O(1)
插入排序 Insertion Sort Ω(n) θ(n²) O(n²) O(1)
选择排序 Selection Sort Ω(n²) θ(n²) O(n²) O(1)
二叉树排序 Tree Sort Ω(n log n) θ(n log n) O(n²) O(n)
希尔排序 Shell Sort Ω(n log n) θ(n (log(n))²) O(n (log(n))²) O(1)
桶排序 Bucket Sort Ω(n+k) θ(n+k) O(n²) O(n)
基数排序 Radix Sort Ω(nk) θ(nk) O(nk) O(n+k)
计数排序 Counting Sort Ω(n+k) θ(n+k) O(n+k) O(k)

Cubesort

适用于处理高维数据

Ω(n) θ(n log n) O(n log n) O(n)

你可能感兴趣的:(数据结构,算法,Big,O,复杂度)