美文网首页
归并排序(mergeSort)算法示例

归并排序(mergeSort)算法示例

作者: _浅墨_ | 来源:发表于2024-07-22 22:12 被阅读0次

MergeSort.swift :

// 泛型函数,可以排序任何遵循 Comparable 协议的元素类型
// 函数接受一个数组作为输入,返回排序后的新数组
public func mergeSort<Element>(_ array: [Element]) -> [Element] where Element: Comparable {
  guard array.count > 1 else {
    return array
  }
  // 递归地对左半部分和右半部分进行排序
  let middle = array.count / 2
  let left = mergeSort(Array(array[..<middle]))
  let right = mergeSort(Array(array[middle...]))
  return merge(left, right)
}

// 合并两个已排序的子数组
private func merge<Element>(_ left: [Element], _ right: [Element]) -> [Element] where Element: Comparable {
  var leftIndex = 0
  var rightIndex = 0
  var result: [Element] = []
  while leftIndex < left.count && rightIndex < right.count {
    let leftElement = left[leftIndex]
    let rightElement = right[rightIndex]
    if leftElement < rightElement {
      result.append(leftElement)
      leftIndex += 1
    } else if leftElement > rightElement {
      result.append(rightElement)
      rightIndex += 1
    } else {
      result.append(leftElement)
      leftIndex += 1
      result.append(rightElement)
      rightIndex += 1
    }
  }
  if leftIndex < left.count {
    result.append(contentsOf: left[leftIndex...])
  }
  if rightIndex < right.count {
    result.append(contentsOf: right[rightIndex...])
  }
  return result
}

这个实现展示了Swift的几个重要特性:

  1. 泛型编程:通过使用泛型,该算法可以排序任何 Comparable 类型。
  2. 递归:mergeSort 函数通过递归来实现分治策略。
  3. 函数式编程:通过将排序过程分解为smaller、可组合的函数。

归并排序的时间复杂度为 O(n log n),空间复杂度为 O(n)。这是一个稳定的排序算法,适用于大型数据集,特别是在外部排序中很有用。

相关文章

  • 归并排序的递归实现与非递归实现

    归并排序 归并排序图 递归实现简介代码示例 mergesort(left,right,**a){ if(l...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 算法分析与设计复习

    1、排序算法 QuickSort 快速排序 MergeSort 归并排序 HeapSort 堆排序 BubbleS...

  • 归并排序

    归并排序 归并排序(Mergesort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分...

  • 排序算法(2):归并排序

     归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • python归并排序--递归实现

    归并排序: 归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • 归并排序

    什么是归并排序? 归并排序(Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,...

  • python实现归并排序(MergeSort)

    python实现【归并排序】(MergeSort) 算法原理及介绍 归并排序的核心原理是采用分治法(Divide ...

  • 说说算法那些事-归并排序

    归并排序(mergeSort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and C...

  • 归并排序

    一、定义 归并排序,英文称Merge sort 或 mergesort, 是创建在归并操作上的一种排序算法。是19...

网友评论

      本文标题:归并排序(mergeSort)算法示例

      本文链接:https://www.haomeiwen.com/subject/oxtyhjtx.html