首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA编程500例-002(入门级)

  • 25-03-03 08:01
  • 4543
  • 12018
blog.csdn.net

目录

1、合并排序数组1(升序):

2、【拓展】合并排序数组2(降序):

2-1、Python:

2-2、VBA:

3、相关文章:

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502 

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421

欢迎志同道合者一起交流学习,我的QQ:94509325/微信号

        数组合并排序(Array Merge Sort)算法是一种效率较高的排序算法,它的主要思想是将数组分成两半,分别对每一半进行排序,然后再将这两半合并成一个有序的数组。常见的应用场景如下:

1、数据库管理:数据库中经常需要对大量数据进行排序,例如,按照日期、姓名、年龄等字段进行排序。

2、网络数据包排序:在网络通信中,数据包可能来自不同的源,需要按照一定的顺序进行排列。

3、文件和文件夹排序:在文件系统中,需要按照文件名、大小、修改时间等信息对文件和文件夹进行排序。

4、数学和科学计算:在数学和科学计算中,经常需要对大量的数值数据进行排序。数组合并排序算法可以用于这些场景,例如,在统计学中对样本数据进行排序,以便进行进一步的分析。

5、图像和视频处理:在图像和视频处理中,可能需要对像素进行排序,以便进行降噪、滤波等操作。

6、机器学习和数据挖掘:在机器学习和数据挖掘中,经常需要对大量的特征值进行排序,以便进行特征选择和模型训练。

7、搜索引擎:在搜索引擎中,合并排序算法可用于对搜索结果进行排序。通过根据相关性、点击率等因素对搜索结果进行排序,可以提高用户体验。

8、链表排序:合并排序算法也适用于链表的排序。由于链表的数据结构特性,合并排序算法能够在O(n Log n)时间内对链表进行排序,这在处理链表数据时非常有效。

        总之,数组合并排序算法在实际应用中具有广泛的应用场景,其高效的排序性能使得它在处理数学和科学计算、链表排序、文件和文件夹排序、数据库管理以及搜索引擎等领域中发挥着重要作用。

 

1、合并排序数组1(升序):
  1. # 1.问题描述
  2. # 合并两个升序的整数数组A和B,形成一个新的数组,新数组也要有序
  3. # 2.问题示例
  4. # 输入A=[1],B=[1],输出[1,1],返回合并后的数组;输入A=[1,2,3,4],B=[2,4,5,6],输出[1,2,2,3,4,4,5,6],返回合并所有元素后的数组
  5. # 3.代码实现
  6. class Solution:
  7. # 参数A: 有序整数数组A
  8. # 参数B: 有序整数数组B
  9. # 返回值: 一个新的有序整数数组
  10. def mergeSortedArray(self, A, B):
  11. i, j = 0, 0
  12. C = []
  13. while i < len(A) and j < len(B):
  14. if A[i] < B[j]:
  15. C.append(B[j])
  16. j += 1
  17. else:
  18. C.append(A[i])
  19. i += 1
  20. while i < len(A):
  21. C.append(A[i])
  22. i += 1
  23. while j < len(B):
  24. C.append(B[j])
  25. j += 1
  26. return C
  27. if __name__ == '__main__':
  28. A = [1, 4, 3]
  29. B = [1, 2, 3, 5]
  30. D = [1, 2, 3, 4]
  31. E = [2, 4, 5, 6]
  32. solution = Solution()
  33. print("输入:", A, " ", B)
  34. print("输出:", solution.mergeSortedArray(A, B))
  35. print("输入:", D, " ", E)
  36. print("输出:", solution.mergeSortedArray(D, E))
  37. # 4.运行结果:
  38. # 输入: [1, 4, 3] [1, 2, 3, 5]
  39. # 输出: [1, 4, 3, 1, 2, 3, 5]
  40. # 输入: [1, 2, 3, 4] [2, 4, 5, 6]
  41. # 输出: [2, 4, 5, 6, 1, 2, 3, 4]
2、【拓展】合并排序数组2(降序):
2-1、Python:
  1. # 1.问题描述
  2. # 合并两个降序的整数数组A和B,形成一个新的数组,新数组也要有序
  3. # 2.问题示例
  4. # 输入A=[1],B=[1],输出[1,1],返回合并后的数组;输入A=[1,2,3,4],B=[2,4,5,6],输出[6,5,4,4,3,2,2,1],返回合并所有元素后的数组
  5. # 3.代码实现
  6. class Solution:
  7. def mergeSortedArray(self, A, B):
  8. i, j = 0, 0
  9. C = []
  10. while i < len(A) and j < len(B):
  11. if A[i] > B[j]:# 此处判断条件调整即可
  12. C.append(A[i])
  13. i += 1
  14. else:
  15. C.append(B[j])
  16. j += 1
  17. while i < len(A):
  18. C.append(A[i])
  19. i += 1
  20. while j < len(B):
  21. C.append(B[j])
  22. j += 1
  23. return C
  24. if __name__ == '__main__':
  25. A = [4, 3, 2]
  26. B = [6, 5, 4, 3]
  27. D = [4, 3, 2, 1]
  28. E = [6, 5, 2, 1]
  29. solution = Solution()
  30. print("输入:", A, " ", B)
  31. print("输出:", solution.mergeSortedArray(A, B))
  32. print("输入:", D, " ", E)
  33. print("输出:", solution.mergeSortedArray(D, E))
  34. # 4.运行结果:
  35. # 输入: [4, 3, 2] [6, 5, 4, 3]
  36. # 输出: [6, 5, 4, 4, 3, 3, 2]
  37. # 输入: [4, 3, 2, 1] [6, 5, 2, 1]
  38. # 输出: [6, 5, 4, 3, 2, 2, 1, 1]
2-2、VBA:
  1. Rem 调用自定义函数MergeArrays
  2. Sub MergeSortedArray()
  3. Dim A() As Variant
  4. Dim B() As Variant
  5. Dim C() As Variant
  6. Dim D() As Variant
  7. Dim E() As Variant
  8. A = Array(4, 3, 2)
  9. B = Array(6, 5, 4, 3)
  10. D = Array(4, 3, 2, 1)
  11. E = Array(6, 5, 2, 1)
  12. C = MergeArrays(A, B)
  13. Debug.Print "输入: "; Join(A, ", "), " ", Join(B, ", ")
  14. Debug.Print "输出: "; Join(C, ", ")
  15. C = MergeArrays(D, E)
  16. Debug.Print "输入: "; Join(D, ", "), " ", Join(E, ", ")
  17. Debug.Print "输出: "; Join(C, ", ")
  18. End Sub
  19. Rem 实现数组合并排序的自定义函数
  20. Function MergeArrays(A() As Variant, B() As Variant) As Variant
  21. Dim i As Long, j As Long, k As Long
  22. Dim C() As Variant
  23. ReDim C(1 To UBound(A) + UBound(B) + 2) '空数组C的上限需要加2,那是因为数组A/B的下限都是从0开始的
  24. i = 0
  25. j = 0
  26. k = 1
  27. While i <= UBound(A) And j <= UBound(B)
  28. If A(i) > B(j) Then
  29. C(k) = A(i)
  30. i = i + 1
  31. Else
  32. C(k) = B(j)
  33. j = j + 1
  34. End If
  35. k = k + 1
  36. Wend
  37. While i <= UBound(A)
  38. C(k) = A(i)
  39. i = i + 1
  40. k = k + 1
  41. Wend
  42. While j <= UBound(B)
  43. C(k) = B(j)
  44. j = j + 1
  45. k = k + 1
  46. Wend
  47. ReDim Preserve C(1 To k - 1)
  48. MergeArrays = C
  49. End Function

注意:2-2中的代码需粘贴到你的VBA编辑器中,并调用MergeArrays函数来对合并数组进行降序,且结果在立即窗口中展现出来。

3、相关文章:

3-1、Python-VBA编程500例-001(入门级)

3-2、Python-VBA编程500例-003(入门级)

3-3、 Python-VBA编程500例-004(入门级)

3-4、Python-VBA编程500例-005-01(入门级) 

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502 
个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421
 
欢迎志同道合者一起交流学习,我的QQ:94509325/微信号:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://blog.csdn.net/ygb_1024/article/details/136672578"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top