美文网首页
归并排序(swift)

归并排序(swift)

作者: 闻道刘 | 来源:发表于2020-08-11 10:08 被阅读0次
func mergeSort(_ array: [Int]) -> [Int] {
    return mergeSortPrivate(array)
}

private func mergeSortPrivate(_ array: [Int]) -> [Int] {
    if array.count <= 1 {return array}
    
    let tmpArr = array
    let count = array.count
    let middle = (count - 1) / 2

    let leftArr = mergeSortPrivate(Array(tmpArr[0...middle]))
    let rightArr = mergeSortPrivate(Array(tmpArr[middle+1...count-1]))
    return merge(leftArr, rightArr)
}

private func merge(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
    var tmpArr = [Int]()
    var j = 0;
    var k = 0;
    while j < arr1.count && k < arr2.count {
        if arr1[j] <= arr2[k] {
            tmpArr.append(arr1[j])
            j += 1
        } else {
            tmpArr.append(arr2[k])
            k += 1
        }
    }
    
    if j == arr1.count {
        tmpArr += arr2[k..<arr2.count]
    } else {
        tmpArr += arr1[j..<arr1.count]
    }
    
    return tmpArr
}

print(mergeSort([0,5,3,2,8,9,1,5,2,4,6,8]))

[0, 1, 2, 2, 3, 4, 5, 5, 6, 8, 8, 9]

相关文章

  • swift中几种排序算法原理的UI动态实现

    swift中的排序算法总结 冒泡排序 选择排序 快速排序 插入排序 堆排序 归并排序 系统排序 我们将这几种数组排...

  • 排序算法

    约定 选择排序 冒泡排序 插入排序 希尔排序 归并排序1. 归并方法2. 自顶向下归并排序3. 自底向上归并排序 ...

  • 排序二:归并、快排

    文章结构 归并排序 快速排序 源码 1. 归并排序 1.1 什么是归并排序 归并排序的思想是:将待排序的区间平分成...

  • java归并排序

    归并排序什么是归并排序:图解归并排序归并排序有两种实现方式,一是基于递归,而是基于迭代1)基于递归的归并排序: 基...

  • 归并排序(swift)

  • 归并排序(Swift)

    最近在学习算法,归并排序和快速排序都用到分治思想,编程实现方式是通过递归。本文旨在给Swift语言开发者提供编程思...

  • Swift 归并排序

    Swift 归并排序 基本原理: 对于两个有序子数组,合并成一个有序数组,是一个较为简单的事情。可以对两个子数组,...

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 常见的排序算法(2)

    要点 快速排序 归并排序 1.快速排序 2.归并排序

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

网友评论

      本文标题:归并排序(swift)

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