一、时间复杂度
将程序执行的计算步骤的总和叫做时间复杂度
时间复杂度实际上用来描述算法时间效率
例:如T(n)=n2+5n+6与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
总结:大O表示法就是将一个T(n)时间复杂度的系数去掉只留下最特征的部分就是大O表示法。
引用:
二、排序
常用排序:
冒泡排序 - (交换排序) 、快速排序 - (交换排序)、
选择排序 - (选择排序)、堆排序 - (选择排序)、
直接插入排序 - (插入排序)、希尔排序 - (插入排序)、
(归并排序、、桶/基数排序)
——————————————
冒泡排序
思路:
1.重复遍历要排序的数列n个元素,一次比较相邻两个元素 一次比较,保证右边的元素始终大于左边的元素;
(第一轮结束后,数列中最后一个元素一定是当前数列中最大值)
2.对数列当中剩下的n-1个元素,再次执行步骤1
3.对于长度为n的数列,一共需要执行n-1次轮的比较
"""冒泡排序"""
def bubble_sort(lst):
for i in range(len(lst) - 1):
for j in range(len(lst) - 1 - i):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
return lst
l1 = [33, 11, 44, 22, 55, 66, 12, 42, 23, 45, 97, 54]
print(bubble_sort(l1))
#[11, 12, 22, 23, 33, 42, 44, 45, 54, 55, 66, 97]
————————————————
选择排序
思路:
1.遍历待排序数列,并定义当前位置的元素为此次循环最小值
(首先找到最小的元素)
2.若最小元素不是待排序数列的