学习目标:

  • python--8每日一讲:排序算法的分析--时间 |冒泡排序,选择排序, 插入排序,归并排序,堆排序,快速排序|未完end.......

学习内容:

  1. python--8每日一讲:排序算法的分析--时间 |

  2. 冒泡排序

  3. 选择排序

  4. 插入排序

  5. 归并排序

  6. 堆排序

  7. 快速排序|未完end.......


目录

学习目标:

学习内容:

python--8每日一讲:排序算法的分析--时间 |

冒泡排序

选择排序

插入排序

归并排序

堆排序

快速排序|未完end.......

回顾——需要小到大--操作-O(n2 )

冒泡排序--极端

 选择排序

 插入排序

###############################T=O(nlogn)

归并排序--空间:O(n)          堆排序

 快速排序

堆排序

未完end....... 

学习时间:

学习产出:


 


回顾——需要小到大--操作-O(n2 )

冒泡排序--极端

c566d7459e7b412dbd2ee57bc5c5a160.png

 e9d0329ce94144968996f371bc3de6a1.png

25be6e77650e43be97d9b1a73a41f535.png

 

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)

 选择排序

b064b0b18a4642e6932bc755ee7a6e50.png

f81fde60245c41818d103d1c3ba81c56.png

72cfc3194d3c4b408dddccab86f80d87.png

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

 插入排序

eb54751da40741f38af791a46746036b.png

 

 9fae7766c0bb47e1ada5686417593596.png

 

9e210534b2a047cc8e65c6647407dd81.png

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)          堆排序

c194605d96b24206b4bf5f358c5b4fc4.png

 0d00567ce8bc491491efbc17e6fcdaa1.png

 

0bd655c5ad734eb8bae3cd212fc74072.png

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]

 快速排序

8b684e9fd13c49eea09377d42c2ab7f9.png

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]

堆排序

c141f9a0fe71483a9e7bcf4995506524.png

下面是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....... 


学习时间:

学习时间为不运动的时候,作者咕咕了是去运动(无氧运动和有氧运动都做最好)了,请饶恕。


学习产出:

画工

72c38287df984819b0fea73c0f1a8bc6.png

6dd91d56cb8f4416b836280cdf174082.png

6ce934c5dae94daf9143ea2fa12a587a.png

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()

                                                                                              http://t.csdnimg.cn/WpVQK

python--2作业66,69,71,84;85;数据类型:int()float()TrueFalsestr()list()set()dict()tuple()class 

                                                                                            http://t.csdnimg.cn/R005I

python--1作业,注释、输入输出、运算符、运算结果、三目运算符、关系表达、多值交换、偶数、随机数、三目运算、if、elif、else、while、for、break、contince、pass                                                                                                   http://t.csdnimg.cn/0KDeU


  计算机网络第1章:计算机网络的概念、组成与功能;计算机网络的分类、标准化工作及相关组织

                                                                                                       http://t.csdnimg.cn/uZOAM

计算机网络第一章:性能指标:带宽、时延、时延带宽积、RTT、吞吐量、速率、信道利用率

                                                                                                                                                                                                                           http://t.csdnimg.cn/avNeb

计算机网络体系结构——PDU、SDU、PCI、协议、访问、接口、SAP

                                                                                                          http://t.csdnimg.cn/x3Uar

 计算机网络分层结构——OSI/ISO、TCP/IP                                                                                                                                                   http://t.csdnimg.cn/hLrqY

 1章选择                                                                                          http://t.csdnimg.cn/cnmdJ

2章选择、解答                                                                                http://t.csdnimg.cn/ONrER

   通信基本概念:数据、信号、码元、信源、信道、信宿、速率、波特、带宽                                                                                                        http://t.csdnimg.cn/TKnyM

 数据、信号、码元、信源、信道、信宿、速率、波特、带宽-通信基本概念

                                                                                                         http://t.csdnimg.cn/Kc2e3

HCIA——30奈奎斯特定理、香农定理                                              http://t.csdnimg.cn/Yqtch

HCIA——20应用层:C/S、P2P、peer                                                                                                                                                                                       http://t.csdnimg.cn/4i4Og

HCIA——21C/S、P2P、peer的选择     

                                                                                                                                                                                                                          http://t.csdnimg.cn/4a11f                                                                

 DNS层次域名空间、域名服务器、域名解析的原理                        http://t.csdnimg.cn/yeWd6

 HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答                                                                                                                              http://t.csdnimg.cn/RXPNV 

 HCIA——24FTP 的工作原理、功能、TFTP、控制连接、数据连接

                                                                                                                                                                                                                    http://t.csdnimg.cn/9TPlw

HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答 

                                                                                                    http://t.csdnimg.cn/8GkAU

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遍
  • 有错误请指出,作者会及时改正

33978c65e26d4825b59a2979733d8b53.png

48fc8d56e77e444289e2e6a3ec81fc99.png

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐