`

鸡尾酒排序 递归 python实现

 
阅读更多
# coding=utf-8
__author__ = 'tsaowe'


#升序排序
def sort(array, start, end):
    """
    :param array: 待排序的序列
    :param start: 排序的方向的第一个数的位置
    :param end: 排序方向上的最后一个数的位置
    """

    if start > end:
        if abs(start - end) == 1:
            if array[start] < array[end]:
                array[start], array[end] = array[end], array[start]
        else:
            for i in range(start, end, -1):
                if array[i] < array[i - 1]:
                    array[i], array[i - 1] = array[i - 1], array[i]
            sort(array, end + 1, start)
    else:
        if abs(start - end) == 1:
            if array[start] > array[end]:
                array[start], array[end] = array[end], array[start]
        else:
            for i in range(start, end, 1):
                if array[i] > array[i + 1]:
                    array[i], array[i + 1] = array[i + 1], array[i]
            sort(array, end - 1, start)


if __name__ == '__main__':
    array = [1, 9, 7, 2, 6, 8, 10, -2, 7, 7, 89, 87, 45, -9]
    sort(array, 0, len(array) - 1)
    print(array)
分享到:
评论

相关推荐

    快速排序 --- 非递归实现

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。

    c++鸡尾酒排序算法yu

    3. **递归调用**:在C++代码中,通过递归调用来实现鸡尾酒排序。在`cocktail_sort`函数中,每次缩小排序范围,对`left+1`到`right-1`的子数组进行排序,直到整个数组排序完成。 下面是对给定代码的解释: ```cpp #...

    堆排序递归和非递归的实现

    在标题中提到的“堆排序递归和非递归的实现”,指的是在进行堆排序时的两种不同策略。递归方法是通过函数调用自身来完成堆的构建和调整,而非递归方法则是通过循环结构来达到相同的目的。 1. **递归实现**: 在堆...

    java数据结构算法 冒泡 选择 鸡尾酒 插入 快速 排序算法

    本资源包涵盖了五种常见的排序算法:冒泡排序、选择排序、鸡尾酒排序(又称双向冒泡排序)、插入排序以及快速排序。这些排序算法在实际编程中有着广泛的应用,尤其是在处理大量数据时,了解并熟练掌握它们的原理和...

    Python基于递归算法实现的走迷宫问题

    在探讨如何使用Python实现走迷宫问题之前,我们先来了解一下递归算法的基本概念及其应用场景。 **递归**是一种非常重要的算法思想,在计算机科学中有着广泛的应用。简单来说,递归是指一个函数直接或间接地调用自身...

    快速排序算法Python实现:详解分治法原理与高效排序步骤

    文中提供了具体的Python实现代码,并分析了排序性能,包括如何通过原地分区技术优化空间复杂度。 适合人群:具有编程基础的开发人员和技术爱好者。 使用场景及目标:①理解快速排序算法的实现原理;②学习分治法的...

    快速排序的递归简洁实现

    ### 快速排序的递归简洁实现 #### 分区函数(Partition) 分区是快速排序的核心步骤,其主要目标是选择一个基准元素(pivot),并将所有小于等于该基准的元素移动到基准的左边,所有大于该基准的元素移动到基准的...

    python实现快速排序和冒泡排序比较

    在实现这两种排序算法时,还可以考虑优化措施,例如快速排序中的“三数取中”法来选择基准值,或者冒泡排序中的“鸡尾酒排序”等改进版本。 通过Python实现快速排序和冒泡排序,并进行时间比较,不仅可以加深对这两...

    冒泡排序和递归求和实现

    在提供的文件`Test1.java`和`Test2.java`中,很可能是实现了冒泡排序和递归求和的Java代码示例。通过阅读和理解这些代码,你可以更深入地了解这两种算法的实际应用。在分析这些代码时,关注类定义、方法定义、循环...

    Python用递归实现字符串反转

    ### Python用递归实现字符串反转 #### 知识点概览 1. **递归的基本概念** 2. **Python中的递归函数实现** 3. **字符串处理与操作** 4. **递归在字符串反转中的应用** 5. **递归调用的深度限制问题** #### 递归的...

    c++合并排序算法递归与非递归方式

    c++实现的合并排序算法 用递归和非递归两种方式实现的

    递归拓扑排序-非递归拓扑排序 Python

    递归拓扑排序-非递归拓扑排序 Python 1、用于拓扑排序的 程序 有向无环图 (DAG) 的拓扑排序是顶点的线性排序,因此对于每个有向边 uv,顶点 u 在排序中排在 v 之前。如果图形不是 DAG,则无法对图形进行拓扑排序。...

    合并排序递归和非递归算法

    在实际编程中,还可以考虑其他优化策略,如使用自底向上的合并排序(先处理较小的子数组,减少不必要的合并操作),或者采用尾递归优化来减少栈空间的使用。这些方法可以在保持算法效率的同时,优化资源的利用。通过...

    递归方法实现快速排序

    3. **递归排序**:对基准左边的子数组和右边的子数组分别进行快速排序,这个过程通过递归调用快速排序函数来实现。如果子数组为空,递归结束;否则,重复步骤1和2。 4. **合并结果**:由于排序是就地进行的,不需要...

    各种排序算法的Python实现

    本资源提供了各种排序算法的Python实现,这将帮助开发者深入理解这些算法的工作原理,并提升他们的编程技能。以下是对每个排序算法的详细介绍: 1. 冒泡排序(Bubble Sort): 冒泡排序是最基础的排序算法之一,它...

    Python-从零开始Python实现一个递归下降JSON解释器和生成器

    本教程将深入探讨如何从零开始使用Python实现一个递归下降的JSON解释器和生成器。递归下降是一种解析技术,通过递归函数来处理输入,特别适用于解析上下文无关的语言,如JSON。 首先,我们需要了解JSON的基本结构。...

    阿克曼函数非递归实现

    通过以上分析,我们可以看到,阿克曼函数的非递归实现主要涉及堆栈操作、递归转换以及对计算复杂性的理解。这个话题对于学习数据结构和算法的学生来说,是一个挑战性的实践项目,有助于提升他们的编程技能和对复杂...

    用python递归方式实现阶乘计算

    1、递归的特点 递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里...

    基于breast cancer数据集进行横向联邦学习逻辑递归的实现python源码.zip

    基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码.zip基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码.zip基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码....

    插入排序递归非递归汇编写法

    在本实验报告中,我们将使用MIPS汇编语言来实现插入排序,包括递归和非递归版本。 递归版本 在递归版本中,我们使用了递归函数sort来实现插入排序。sort函数将数组的首地址和要排序的数据个数作为参数。函数首先...

Global site tag (gtag.js) - Google Analytics