一、时间复杂度
1.用来评估算法运行效率的一个东西。
2.一般来说,时间复杂度高的算法比复杂度低的算法慢
3.常见的时间复杂度(效率排序)
o(1) 4.不常见的时间复杂度 o(n!)/o(2^n)/o(n^n) 5.如何一眼判断时间复杂度? -循环的过程中出现了循环减半-----o(logn) -几次n的循环就是n的几次方的复杂度 二、空间复杂度 1.空间复杂度:用来评估算法内存占用大小的一个式子 2."空间换时间" 三、递归 1、递归的两个特点: -调用自身 -有结束条件 四、列表查找 1.列表查找:从列表中查找指定元素 -输入:列表、待查找元素。->无序列表 -输出:元素下标或未查找到元素。有序列表 2.顺序查找 -从列表第一个元素开始,顺序进行搜索,知道找到为止 3.二分查找 -从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。 4.汉诺塔问题 五、排序方法 1.冒泡排序 <span style="color: #800000">""" 2.选择排序 3.插入排序 4.快速排序 5.堆排序 #python内置排序--heapq -heapify(x) -heappush(heap,item) -heappop(heap) 优先队列:一些元素的集合,pop操作每次执行都会从优先队列中弹出最大(或最小)的元素 堆---优先队列 #Top-k问题 6.归并排序 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。
优化
<span style="color: #800000">"""
<span style="color: #0000ff">def<span style="color: #000000"> bubble_sort_1(li):
<span style="color: #0000ff">for i <span style="color: #0000ff">in range(len(li)-1<span style="color: #000000">):
exchange =<span style="color: #000000"> False
<span style="color: #0000ff">for j <span style="color: #0000ff">in range(len(li)-i-1<span style="color: #000000">):
<span style="color: #0000ff">if li[j]>li[j+1<span style="color: #000000">]:
li[j],li[j]
exchange =<span style="color: #000000"> True
<span style="color: #0000ff">if <span style="color: #0000ff">not<span style="color: #000000"> exchange:
<span style="color: #0000ff">return