用python写算法2[快速排序]

python版本的快速排序, 经典算法, 话不多说, 代码搞起:

#!/usr/bin/python
import random

class QuickSort():
    def Partition(self, A, p, r):
        x = A[r]
        i = p - 1

        for j in range(p, r):
            if A[j] <= x:
                i = i + 1
                A[i], A[j] = A[j], A[i]
        A[i+1], A[r] = A[r], A[i+1]
        
        return i + 1
             
    def Quick_Sort(self, A, p, r):
        if p < r:
            q = self.Partition(A, p, r)
            self.Quick_Sort(A, p, q-1)
            self.Quick_Sort(A, q+1, r)

def main():
    test_case = [1, 5, 10, 9, 12]

    a = QuickSort()
    a.Quick_Sort(test_case, 0, len(test_case)-1)

    print test_case

if __name__ == '__main__':
    main()

算法的关键部分是Partition过程,它实现了对子数组A[p..r]的重排

posted on 2013-03-27 16:35  jiyiyouxin  阅读(160)  评论(0)    收藏  举报