`
JackyCheng2007
  • 浏览: 253814 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

快速排序 - quick sort python

阅读更多
快速排序是最常用的一种排序,因为它可以取得比较好的平均性能。快速排序是一种递归算法。采用了分而治之的思想。
它的核心步骤是:
1. 把一个序列分成左右两个部分,要求左边的数都比分界点小或相等,右边的数都比分界点的数大。
2. 对步骤1分出来的左右两个部分同样执行1到2的步骤。

那么如何把一个序列分成两个部分呢?设定两个指针i和j,还要设定一个初始比较值x。可以取序列最后的值为x。i左边的都比x小。j是迭代指针,从序列开头到倒数第二个数开始迭代:
1. 如果j指向的值比x大,j下移一位,i不动
2. 如果j指向的值比x小,把i下移一位,再把i和j指向的值交换。然后j下移一位
3. 最后把最后的值和i+1的值交换。

也就是逐步的将比x小的值加到i的队列中来


引用

# python quick sort
def exchange(i, j):
    x = array[i]
    array[i]=array[j]
    array[j]=x
   
def partition(p,r):
    x=array[r]
    i=p-1
    for j in range(p,r-1,1):
        if array[j]<x:
            i=i+1
            exchange(i, j)
    exchange(r,i+1)
    return i+1

def quickSort(p,r):
    if p<r:
        x=partition(p,r)
        quickSort(p,x-1)
        quickSort(x+1,r)

array=[2,5,3,10,8]
quickSort(0,4)
print array
0
0
分享到:
评论
3 楼 JackyCheng2007 2011-02-19  
列表的过滤与映射:
[mapping-expression for element in source-list if filter-expression]


Python 的强大特性之一是其对 list 的解析, 它提供一种紧凑的方法, 可以通过对 list 中的每个元素应用一个函数, 从而将一个 list 映射为另一个 list。

过滤器表达式可以是返回值为真或者假(在 Python 中是 几乎任何东西)的任何表达式。任何经过滤器表达式演算值为元素的真都可以包含在映射中。其它的元素都将忽略,它们不会进入映射表达式,更不会包含在输出列表中。
2 楼 JackyCheng2007 2010-12-01  
感谢高手d指点,受益匪浅,学习了
1 楼 simbas 2010-11-26  
def qsort(L):
    if L == []: return []
    return qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]])

print qsort([2,5,3,10,8]) 

相关推荐

    基于python的排序算法-快速排序Quick Sort

    在Python中实现快速排序,我们通常利用递归来分解问题,然后合并结果。快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续...

    python编写 快速排序 Quick Sort

    python编写 快速排序 Quick Sort

    python 一行代码实现的快速排序 quick sort

    python 一行代码实现的快速排序 quick sort

    Python-Algorithms在Python中实现的算法和数据结构库

    1. **排序算法**:`Algorithms`库提供了多种排序算法的实现,如快速排序(Quick Sort)、归并排序(Merge Sort)、插入排序(Insertion Sort)、选择排序(Selection Sort)、堆排序(Heap Sort)和冒泡排序(Bubble...

    quick_sort_Quick_快速排序_

    在Python中实现快速排序,我们可以定义一个函数,如`quick_sort()`,它接受一个列表作为参数。首先,我们需要选择一个基准元素(pivot),通常选择列表的第一个元素。然后,我们遍历列表,将小于基准的元素放在基准...

    基于python的排序算法-冒泡排序Bubble Sort

    在Python中,还有其他更高效的排序算法,如快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort),它们在处理大数据集时表现更优,但实现起来相对复杂。Python标准库中的`sorted()`函数和列表的`...

    sort_排序算法_python_

    这里我们关注的是Python语言中的两种高效排序算法:快速排序和堆排序。这两种算法都以其优秀的平均时间复杂度O(n log n)而闻名。 首先,让我们详细了解一下快速排序。快速排序是由英国计算机科学家C.A.R. Hoare在...

    快速排序算法python.rar

    在Python中,虽然有内置的`sorted()`函数和`list.sort()`方法,它们基于Timsort算法,效率也很高,但了解并掌握快速排序可以帮助理解排序算法的基本原理,同时在某些特定场景下,快速排序可能更适用。 总结一下,...

    05_quick_sort_Quick_快速排序_

    在Python中,快速排序的代码实现可能如下: ```python def quick_sort(arr): if len(arr) return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x ] middle = [x for x in arr if x == pivot] ...

    Python实现快速排序.rar

    在这个Python实现的压缩包中,包含了一个名为"Python实现快速排序.py"的文件,我们可以深入探讨一下快速排序的原理以及如何用Python来实现它。 快速排序的步骤如下: 1. **选择枢轴元素(Pivot Selection)**:从...

    python冒泡排序 快速排序算法.zip

    **快速排序(Quick Sort)** 快速排序是由C.A.R. Hoare在1960年提出的,是一种高效的排序算法,它的基本思想是分治法。快速排序首先选择一个基准值,然后将数组分为两部分:一部分的所有元素都比基准值小,另一部分...

    算法-理论基础- 排序- 快速排序(包含源程序).rar

    以下是一个简单的快速排序的Python实现: ```python def quick_sort(arr): if len(arr) return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x ] middle = [x for x in arr if x == pivot] ...

    Python快速排序以及其他排序方法集合

    ### 四、快速排序(Quick Sort) 快速排序是一种非常高效的排序算法,其核心思想是分治法。快速排序首先选取一个基准值,然后将数组分为两部分:一部分的所有元素都比基准值小;另一部分的所有元素都比基准值大。接...

    Python版数据结构与算法-排序算法源代码,实现了冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序源代码

    6. **快速排序(Quick Sort)**:快速排序也是分治策略的典型应用,选取一个“基准”元素,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对这两部分递归进行快速排序。Python实现时,...

    python快速排序.docx

    在这个示例中,我们定义了一个递归函数 `quick_sort`,用于对输入的数组进行快速排序。函数的输入参数是数组 `arr`,函数的返回值是排序后的数组。 示例用法: ``` arr = [5, 2, 9, 1, 7, 6, 3] sorted_arr = quick...

    快速排序算法python实现.zip

    在Python中实现快速排序,我们可以定义一个函数,通常命名为`quick_sort`,这个函数接收一个列表作为参数。快速排序的核心在于选择一个基准元素(pivot)并进行分区操作。以下是快速排序算法的基本步骤: 1. **选择...

    searching, sorting (part 1 - selection sort, bubble sort)

    在给定的文件中,介绍了几种排序算法,包括插入排序(Insertion Sort)、合并排序(Merge Sort)和快速排序(Quick Sort)。以下是对这些知识点的详细说明。 **插入排序(Insertion Sort)** 插入排序的基本思想是...

    基于python-java-C++实现快速排序.zip

    快速排序是一种高效的排序算法,...以上就是关于快速排序在Python、Java和C++中的实现方法,这些实现都展示了快速排序的基本逻辑和操作步骤。通过深入理解并实践这些代码,可以进一步提高对排序算法的理解和编程能力。

    排序算法的python实现

    在这两个Python脚本中,`insertion_sort`和`quick_sort`分别是插入排序和快速排序的实现。这两个算法虽然都能对数组进行排序,但它们的时间复杂度和适用场景有所不同。插入排序在处理小规模或者近乎有序的数据时效率...

Global site tag (gtag.js) - Google Analytics