当前位置:   article > 正文

Python-VBA编程500例-002(入门级)_vba编程入门自学100例

vba编程入门自学100例

目录

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

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

2-1、Python:

2-2、VBA:

3、相关文章:

Python算法之旅:https://myelsa1024.blog.csdn.net/article/details/136889623?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算法之旅:https://myelsa1024.blog.csdn.net/article/details/136889623?spm=1001.2014.3001.5502 
个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421
 
欢迎志同道合者一起交流学习,我的QQ:94509325/微信号:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/661903
推荐阅读
相关标签
  

闽ICP备14008679号