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

归并排序(Swift)

作者: amberling | 来源:发表于2018-12-21 11:47 被阅读9次
归并排序.jpg

最近在学习算法,归并排序和快速排序都用到分治思想,编程实现方式是通过递归。本文旨在给Swift语言开发者提供编程思路,具体什么是归并和快排就不做详细介绍了,毕竟各种书籍和文章很容易搜索。。

归并排序,本文包含三个函数,进行排序的函数是func merge()merge()注意细节是参数是有序数组。

由于之前一直是OC开发,对Swift不熟,所数组的操作浪费了自己很多时间,还好实现出来了,代码如下,提供给大家参考,也欢迎指正...

class Sort {

   // 合并有序数组
    private func merge(_ array1:[Int], _ array2:[Int])->[Int]{
        
        var a = [Int]()
        let m = array1.count
        let n = array2.count
        
        var i:Int = 0
        var j:Int = 0
        
        while i<m && j<n {
            if array1[i] <= array2[j] {
                a.append(array1[i])
                i += 1
            }else{
                a.append(array2[j])
                j += 1
            }
        }
        
        if i == m {
            a += array2[j..<n]
        }else{
            a += array1[i..<m]
        }
        return a
    }
    // 递归分解
    private func mergeSortC(_ array:[Int]) -> [Int]{
        if array.count <= 1 {
            print("count = 1,array:\(array)")
            
            return array
        }
        print(array)
        let tmpArray = array
        let n = array.count
        let q = (0+n-1)/2
        
        let leftArray = mergeSortC(Array(tmpArray[0...q]))
        let rightArray = mergeSortC(Array(tmpArray[q+1...n-1]))

        return merge(leftArray,rightArray)

    }

    // 排序对外函数
    public func mergeSort(array:[Int]) -> [Int] {
        let b:[Int] = mergeSortC(array)
        return b
    }
}

函数调用:

var sort = Sort()
let array = sort.mergeSort(array: [11,8,3,9,7,1,2,5])
print(array)

控制台输出:
[1, 2, 3, 5, 7, 8, 9, 11]

相关文章

  • 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/cnlmkqtx.html