百度百科:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源, 资源包括时间资源和内存资源。应用于数学和计算机导论。
# 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义:
# 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。
# O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。
# 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。
#2.冒泡排序:从左到右,数组中相邻的两个元素进行比较
# O(n^2)对n个数排序,需要扫描n×n次
price = [3, 2, 4, 6, 6, 3, 8, 7, 10]
def maopao(price):
for i in range(len(price) - 1): # 控制循环次数
for j in range(len(price) - i -1):
if price[j] > price[j + 1]:
temp = price[j]
price[j]=price[j+1]
price[j+1]=temp
return price
print(maopao(price))
##[2, 3, 3, 4, 6, 6, 7, 8, 10]
#3.选择排序
# 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
# 然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序元素的后边。
# 直到所有元素均排序完毕。
def selectsort(arr):
for i in range(len(arr)-1): # 控制循环次数
min = i # 设定暂时最小值为无序区间第个元素
for j in range(i + 1, len(arr)): # 第二次循环让min去和无序数列的数作比较找出真正最小值
if arr[min] > arr[j]:
min = j
t=arr[min]
arr[min] = arr[i] ##list[i]与list[min]互换位置
arr[i] = t
#arr[min],arr[i]=arr[i],arr[min]
return arr
print(selectsort([4, 2, 1, 5, 76, 64, 18]))
#[1, 2, 4, 5, 18, 64, 76]
def selectsort(arr):
for i in range(len(arr)-1): # 控制循环次数
min = i # 设定暂时最小值为无序区间第个元素
for j in range(i + 1, len(arr)): # 第二次循环让min去和无序数列的数作比较找出真正最小值
if arr[min] > arr[j]:
min = j
#t=arr[min]
arr[min] = arr[i] ##list[i]与list[min]互换位置
arr[i] = arr[min]
#arr[min],arr[i]=arr[i],arr[min]
#[4, 2, 4, 5, 76, 64, 76]
def selectsort(arr):
for i in range(len(arr)-1): # 控制循环次数
min = i # 设定暂时最小值为无序区间第个元素
for j in range(i + 1, len(arr)): # 第二次循环让min去和无序数列的数作比较找出真正最小值
if arr[min] > arr[j]:
min = j
# t=arr[min]
#arr[min] = arr[i] ##list[i]与list[min]互换位置
#arr[i] = arr[min]
arr[min],arr[i]=arr[i],arr[min]
return arr
print(selectsort([4, 2, 1, 5, 76, 64, 18]))
##[1, 2, 4, 5, 18, 64, 76]