# 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....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。
3. **递归调用**:在C++代码中,通过递归调用来实现鸡尾酒排序。在`cocktail_sort`函数中,每次缩小排序范围,对`left+1`到`right-1`的子数组进行排序,直到整个数组排序完成。 下面是对给定代码的解释: ```cpp #...
在标题中提到的“堆排序递归和非递归的实现”,指的是在进行堆排序时的两种不同策略。递归方法是通过函数调用自身来完成堆的构建和调整,而非递归方法则是通过循环结构来达到相同的目的。 1. **递归实现**: 在堆...
本资源包涵盖了五种常见的排序算法:冒泡排序、选择排序、鸡尾酒排序(又称双向冒泡排序)、插入排序以及快速排序。这些排序算法在实际编程中有着广泛的应用,尤其是在处理大量数据时,了解并熟练掌握它们的原理和...
在探讨如何使用Python实现走迷宫问题之前,我们先来了解一下递归算法的基本概念及其应用场景。 **递归**是一种非常重要的算法思想,在计算机科学中有着广泛的应用。简单来说,递归是指一个函数直接或间接地调用自身...
文中提供了具体的Python实现代码,并分析了排序性能,包括如何通过原地分区技术优化空间复杂度。 适合人群:具有编程基础的开发人员和技术爱好者。 使用场景及目标:①理解快速排序算法的实现原理;②学习分治法的...
### 快速排序的递归简洁实现 #### 分区函数(Partition) 分区是快速排序的核心步骤,其主要目标是选择一个基准元素(pivot),并将所有小于等于该基准的元素移动到基准的左边,所有大于该基准的元素移动到基准的...
在实现这两种排序算法时,还可以考虑优化措施,例如快速排序中的“三数取中”法来选择基准值,或者冒泡排序中的“鸡尾酒排序”等改进版本。 通过Python实现快速排序和冒泡排序,并进行时间比较,不仅可以加深对这两...
在提供的文件`Test1.java`和`Test2.java`中,很可能是实现了冒泡排序和递归求和的Java代码示例。通过阅读和理解这些代码,你可以更深入地了解这两种算法的实际应用。在分析这些代码时,关注类定义、方法定义、循环...
### Python用递归实现字符串反转 #### 知识点概览 1. **递归的基本概念** 2. **Python中的递归函数实现** 3. **字符串处理与操作** 4. **递归在字符串反转中的应用** 5. **递归调用的深度限制问题** #### 递归的...
c++实现的合并排序算法 用递归和非递归两种方式实现的
递归拓扑排序-非递归拓扑排序 Python 1、用于拓扑排序的 程序 有向无环图 (DAG) 的拓扑排序是顶点的线性排序,因此对于每个有向边 uv,顶点 u 在排序中排在 v 之前。如果图形不是 DAG,则无法对图形进行拓扑排序。...
在实际编程中,还可以考虑其他优化策略,如使用自底向上的合并排序(先处理较小的子数组,减少不必要的合并操作),或者采用尾递归优化来减少栈空间的使用。这些方法可以在保持算法效率的同时,优化资源的利用。通过...
3. **递归排序**:对基准左边的子数组和右边的子数组分别进行快速排序,这个过程通过递归调用快速排序函数来实现。如果子数组为空,递归结束;否则,重复步骤1和2。 4. **合并结果**:由于排序是就地进行的,不需要...
本资源提供了各种排序算法的Python实现,这将帮助开发者深入理解这些算法的工作原理,并提升他们的编程技能。以下是对每个排序算法的详细介绍: 1. 冒泡排序(Bubble Sort): 冒泡排序是最基础的排序算法之一,它...
本教程将深入探讨如何从零开始使用Python实现一个递归下降的JSON解释器和生成器。递归下降是一种解析技术,通过递归函数来处理输入,特别适用于解析上下文无关的语言,如JSON。 首先,我们需要了解JSON的基本结构。...
通过以上分析,我们可以看到,阿克曼函数的非递归实现主要涉及堆栈操作、递归转换以及对计算复杂性的理解。这个话题对于学习数据结构和算法的学生来说,是一个挑战性的实践项目,有助于提升他们的编程技能和对复杂...
1、递归的特点 递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里...
基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码.zip基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码.zip基于breast_cancer数据集进行横向联邦学习逻辑递归的实现python源码....
在本实验报告中,我们将使用MIPS汇编语言来实现插入排序,包括递归和非递归版本。 递归版本 在递归版本中,我们使用了递归函数sort来实现插入排序。sort函数将数组的首地址和要排序的数据个数作为参数。函数首先...