博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法小计-列表排列
阅读量:5098 次
发布时间:2019-06-13

本文共 1340 字,大约阅读时间需要 4 分钟。

算法的简单的概念

算法的概念:
O()大O表示法
O(): 程序大概运行的次数

1,时间复杂度:

时间复杂度是用来估计算法运行时间的一个式子(单位)。
常见的时间复杂度(按效率排序)
O(1)<O(logn)<O(n)<O(nlogn)<O(n**2)<O(n**2logn)<O(n**3)
前四种较重要。

2,空间复杂度:

时间复杂度:用来评估算法内存占用大小的一个式子

列表排序:
排序low b三人组:
冒泡排序
每两个相邻的数比较,如果对比一个数比一个大,交换位置。
def Bubble_Sort(li):
for i in range(len(li)):
for j in range(len(li)- i - 1):
if li[j] > li[j+1]:
li[j], li [j+1] = li[j+1], li[j]
li = [7,2,4,5,2,1,8,9]
Bubble_Sort(li)
print(li)
选择排序:
拿出一个数假设为最小的数,再随机选一个数,大的就放在后面,小的就交换位置。
def select_sort(li):
for i in range(len(li)-1):
minLoc = i
for j in range(i+1, len(li)-1)
if li[j] < li[minLoc]:
li[j], li[minLoc] = li[minLoc] ,li[j]
插入排序:
列表被分为有序区和无序区两个部分,最初有序区室友只有一个元素
每次从无序区选择一个元素, 插入到有序区的位置,直到无序区变空
def insert_sort(li):
for i in range(1, len(li)):
tmp = li[i]
j = i-1
while i >= 0 and tmp <li[j]:
li[j+1] = li[j]
j = j-1
li[j+1] = tmp

快速排序:*******

取一个元素p(第一个元素),使元素p归为;
列表被p分成两个部分,左边都比p小,右边都比p大;
递归完成排序
def partition():
tmp = li[left]
while left < right:
while left,right and li[right] > tmp:
right = right - 1
li[left] = li[right]
while left <right and li[left] < tmp:
left = left + 1
li[right] = li[left]
li[left] = tmp
return left

def quick_sort(li):

if left < right:
mid = partition(li, left, right)
quick_sort(li , left, mid -1)
quick_sort(li, mid+1, right)
排序NB二人组:
堆排序
归并排序

没什么人用的排序:

基本排序
希尔排序
桶排序

 

转载于:https://www.cnblogs.com/sudaguo/p/10909152.html

你可能感兴趣的文章
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
生活大爆炸之何为光速
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
在centos上开关tomcat
查看>>
无人值守安装linux系统
查看>>