Python3 notes

简介: Python3 notes

Python 归并排序

Document 对象参考手册 Python3 实例

归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

分治法:

分割:递归地把当前序列平均分割成两半。

集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。

实例

def merge(arr, l, m, r):  

   n1 = m - l + 1

   n2 = r- m  

 

   # 创建临时数组

   L = [0] * (n1)

   R = [0] * (n2)

 

   # 拷贝数据到临时数组 arrays L[] 和 R[]  

   for i in range(0 , n1):  

       L[i] = arr[l + i]  

 

   for j in range(0 , n2):  

       R[j] = arr[m + 1 + j]  

 

   # 归并临时数组到 arr[l..r]  

   i = 0     # 初始化第一个子数组的索引

   j = 0     # 初始化第二个子数组的索引

   k = l     # 初始归并子数组的索引

 

   while i < n1 and j < n2 :  

       if L[i] <= R[j]:  

           arr[k] = L[i]  

           i += 1

       else:  

           arr[k] = R[j]  

           j += 1

       k += 1

 

   # 拷贝 L[] 的保留元素

   while i < n1:  

       arr[k] = L[i]  

       i += 1

       k += 1

 

   # 拷贝 R[] 的保留元素

   while j < n2:  

       arr[k] = R[j]  

       j += 1

       k += 1

 

def mergeSort(arr,l,r):  

   if l < r:  

 

     

       m = int((l+(r-1))/2)

 

     

       mergeSort(arr, l, m)  

       mergeSort(arr, m+1, r)  

       merge(arr, l, m, r)  

 

 

arr = [12, 11, 13, 5, 6, 7]  

n = len(arr)  

print ("给定的数组")  

for i in range(n):  

   print ("%d" %arr[i]),  

 

mergeSort(arr,0,n-1)  

print ("\n\n排序后的数组")  

for i in range(n):  

   print ("%d" %arr[i]),

执行以上代码输出结果为:

给定的数组

12

11

13

5

6

7

排序后的数组

5

6

7

11

12

13

相关文章
|
8月前
|
网络协议 Python
Python3 notes
Python3 notes
|
7月前
|
Python
GitHub爆赞!终于有大佬把《Python学习手册》学习笔记分享出来了
这份笔记的目标是为了给出一份比较精炼,但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单,但是措辞比较罗嗦,而且一个语法点往往散落在多个章节,不方便读者总结。 我在做笔记时,将一个知识点的内容都统筹在一个章节里面,因此提炼性大大提高。而且还有《Python学习手册》中文第四版的翻译在某些章节(可能难度较大?)措辞可能前后矛盾。当知识点提炼之后就能够很快的找到一些难以理解的概念的上下文,方便吃透这些难点。
|
运维 Shell Linux
《Shell 脚本速查手册》下载地址
编写Bash脚本耗时长?不稳定?有妙招!阿里云开发者社区和linux中国开源社区联手推出《Shell脚本速查手册》,为运维工程师提供一个快速、便捷的查询手册,以共开发者查询自己日常工作中常用的命令和脚本。
157 0
《Shell 脚本速查手册》下载地址
|
存储 数据可视化 API
70个注意的Python小Notes
Python读书笔记:70个注意的小Notes 作者:白宁超 2018年7月9日10:58:18 摘要:在阅读python相关书籍中,对其进行简单的笔记纪要。旨在注意一些细节问题,在今后项目中灵活运用,并对部分小notes进行代码标注。
1361 0
|
机器学习/深度学习 Python
python学习手册15 文档
点击(此处)折叠或打开 #!/usr/bin/env python # -*- coding:utf8 -*- ''' python文档资...
854 0
|
12天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201895 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
4天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
|
1天前
|
供应链 监控 安全
|
4天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。