LintCode Python 简单级题目 464.整数排序 II

题目描述:

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。

样例

给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]

题目分析:

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。

快速排序,递归将大于key值和小于key值的分为两部分,直到每个子数组长度为1,不可再分。

 

源码:

class Solution:
    # @param {int[]} A an integer array
    # @return nothing
    def sortIntegers2(self, A):
        # Write your code here
        if A is None: return A
        n = len(A)
        if n == 1 or n == 0: return A
        return self.quickSort(A,0,n-1)
        
    def quickSort(self,List,left,right):
        if left >= right:
            return List
        key = List[left]
        low = left
        high = right
        while left < right:
            while left < right and List[right] >= key:
                right -= 1
            List[left],List[right] = List[right],List[left]
            while left < right and List[left] <= key:
                left += 1
            List[right],List[left] = List[left],List[right]
        self.quickSort(List,low,left-1)
        self.quickSort(List,left+1,high)
        return List
posted @ 2017-06-08 15:06  刘冬丶  阅读(1118)  评论(0编辑  收藏  举报