美文网首页
Swift递归排序

Swift递归排序

作者: 分享学习 | 来源:发表于2017-03-14 11:38 被阅读44次

递归排序的原理

快速排序是找出一个元素作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正确位置,排序完成。

所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。

 //MARK:- 递归排序(升序排序)
    func sortArrayAscend(array:[Int],startIndex:Int,endIndex:Int) -> [Int] {
        var temp = 0, arr = array
        var i = startIndex, j = endIndex
        //如果结束位置与开始位置相同,即排序完毕
        if i == j {
            return arr
        }
        //以传入的开始位置元素为基准,从后往前比较,只要比基准小就交换位置,一直比较到开始位置
        while i < j {
            if arr[i] < arr[j] {
                j -= 1
            }else {
                temp = arr[i]
                arr[i] = arr[j]
                arr[j] = temp
            }
        }
        //令开始位置后移,循环调用自身
        return sortArrayAscend(array: arr, startIndex: startIndex+1, endIndex: endIndex)
    }

相关文章

  • Swift递归排序

    递归排序的原理 快速排序是找出一个元素作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边...

  • 归并排序(Swift)

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

  • 算法设计与分析——5.排序与树结构

    5.1 引言 5.2 递归与排序 5.2.1 选择排序 代码 5.1 选择排序的递归实现 代码 5.2 选择排序...

  • 2020-08-21 算法合集

    1. 冒泡排序 2.选择排序 3. 插入排序 4. 希尔排序 5. 归并排序(递归实现) 6. 快速排序(递归实现...

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • Java——归并排序

    在讲解归并排序之前,我们必须先知道什么是递归,因为在归并排序中我们用到了递归。 递归 什么是递归呢?递归方法就是直...

  • 常见算法的 Python 实现

    二分法查找 非递归版本: 递归方法实现: 冒泡排序 选择排序

  • PHP数组示例算法

    1、冒泡排序 2、归并排序 3、二分查找-递归 4、二分查找-非递归 5、快速排序 6、选择排序 7、插入排序

  • 归并排序

    归并排序:递归加合并的排序

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

网友评论

      本文标题:Swift递归排序

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