python--8每日一讲:排序算法的分析--时间 |冒泡排序,选择排序, 插入排序,归并排序,堆排序,快速排序|未完end.......(中午的赶稿,想不出讲什么好,选了算法,请宽恕我)
python--4函数def,本质、值传递、引用传递、默认值参数、*参数名、**变量、lambda [参数]: 函数、偏函数、递归、递归练习。python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass。HCIA——25FTP 的工作原理、功能、TFTP、控制连
学习目标:
- python--8每日一讲:排序算法的分析--时间 |冒泡排序,选择排序, 插入排序,归并排序,堆排序,快速排序|未完end.......
学习内容:
-
python--8每日一讲:排序算法的分析--时间 |
-
冒泡排序
-
选择排序
-
插入排序
-
归并排序
-
堆排序
-
快速排序|未完end.......
目录
###############################T=O(nlogn)
回顾——需要小到大--操作-O(n2 )
冒泡排序--极端


arr=[1,2,4,6,44,777,45]
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1-i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
print(arr)
选择排序



arr=[8,90,55,44,33,23]
def xunze(arr):
for i in range(0,len(arr)-1):
min=i
for j in range(i+1,len(arr)):
if arr[j]<arr[min]:
min=j
if i !=min:
arr[i],arr[min]=arr[min],arr[i]
return arr
插入排序



arr=[8,90,55,44,33,23]
def xunze(arr):
for i in range(0,len(arr)-1):
min=i
for j in range(i+1,len(arr)):
if arr[j]<arr[min]:
min=j
if i !=min:
arr[i],arr[min]=arr[min],arr[i]
return arr
a=xunze(arr)
print(a)
###############################T=O(nlogn)
归并排序--空间:O(n) 堆排序



def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
def merge(left, right):
result = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result
# 使用示例
arr = [5, 3, 4, 1, 2]
sorted_arr = merge_sort(arr)
print(sorted_arr) # 输出: [1, 2, 3, 4, 5]
快速排序

def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
# 示例使用
arr = [3, 6, 8, 10, 1, 2, 1, 4, 7, 9]
sorted_arr = quicksort(arr)
print(sorted_arr) # 输出: [1, 1, 2, 3, 4, 6, 7, 8, 9, 10]
堆排序

下面是Python中堆排序的一种实现方式:
解法1:使用heapq模块
Python内建了heapq模块,可以方便地实现堆排序。
import heapq
def heap_sort(arr):
heapq.heapify(arr) # 将列表arr转换为堆
sorted_arr = []
while arr:
sorted_arr.append(heapq.heappop(arr)) # 取出堆顶元素,即最大或最小的元素,添加到sorted_arr中
return sorted_arr
arr = [10, 5, 3, 1, 6, 4, 7, 8, 2, 9]
print(heap_sort(arr)) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
____________________________________________________________________________________
解法2:手动实现堆
如果不想使用heapq模块,也可以手动实现堆的操作。
def heapify(arr, n, i):
largest = i
l = 2 * i + 1 # left = 2*i + 1
r = 2 * i + 2 # right = 2*i + 2
# 找到最大的节点
if l < n and arr[i] < arr[l]:
largest = l
if r < n and arr[largest] < arr[r]:
largest = r
# 交换元素
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heapSort(arr):
n = len(arr)
# 建立堆
for i in range(n, -1, -1):
heapify(arr, n, i)
# 交换元素
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # 将堆顶元素与最后一个元素交换
heapify(arr, i, 0) # 重新建立堆
arr = [10, 5, 3, 1, 6, 4, 7, 8, 2, 9]
heapSort(arr)
print("Sorted array is:", arr)
这两种方法都可以实现堆排序,第一种方法更简洁,但是需要导入模块;第二种方法更复杂,但不需要导入模块,适合于理解堆排序的原理。
未完end.......
学习时间:
学习时间为不运动的时候,作者咕咕了是去运动(无氧运动和有氧运动都做最好)了,请饶恕。
学习产出:
画工



python--7class()的练习|未完end....... http://t.csdnimg.cn/C1PB1
python--6作业|笔记( 继python--2class)__init__,__str__ ,封装__ 重载, main继承 |练习,run,#面向对象封装摆放家具|未完end....... http://t.csdnimg.cn/M4cdm
python--5--len() http://t.csdnimg.cn/wLynX
python--4函数def,本质、值传递、引用传递、默认值参数、*参数名、**变量、lambda [参数]: 函数、偏函数、递归、递归练习 http://t.csdnimg.cn/h9x17
python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()
python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class
python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass http://t.csdnimg.cn/0KDeU
计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织
计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率
计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP
计算机网络分层结构——OSI/ISO、TCP/IP http://t.csdnimg.cn/hLrqY
2章选择、解答 http://t.csdnimg.cn/ONrER
通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽 http://t.csdnimg.cn/TKnyM
数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念
HCIA——30奈奎斯特定理、香农定理 http://t.csdnimg.cn/Yqtch
HCIA——20应用层:C/S、P2P、peer http://t.csdnimg.cn/4i4Og
HCIA——21C/S、P2P、peer的选择
DNS层次域名空间、域名服务器、域名解析的原理 http://t.csdnimg.cn/yeWd6
HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答 http://t.csdnimg.cn/RXPNV
HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接
HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答
HCIA——26E-mall、MIME、POP3、IMAP、电子邮件系统的组成结构、电子邮件的发送,接收过程、MIME 与SMTP 的关系 http://t.csdnimg.cn/smTaR
HCIA——27E-mall、MIME;POP3、IMAP的选择,解答 http://t.csdnimg.cn/xnsXP
HCIIA——28HTTP、万维网、HTML;万维网的工作过程;HTTP 的特点——无连接-TCP、无状态-Cookie、非持久连接-非流水线和流水线;HTTP 的报文结构 http://t.csdnimg.cn/cRcxY
- 技术笔记 1遍
- 有错误请指出,作者会及时改正


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)