美文网首页
快速排序的python实现

快速排序的python实现

作者: wasw100 | 来源:发表于2015-06-27 23:50 被阅读0次

    代码:

    # -*- coding: utf-8 -*-
    """通过数组交换的快速排序"""
    import random
    
    
    def quicksort(arr, left, right):
        # 只有left < right 排序
        if left < right:
            pivot_index = partition(arr, left, right)
            quicksort(arr, left, pivot_index - 1)
            quicksort(arr, pivot_index + 1, right)
    
    
    def partition(arr, left, right):
        """找到基准位置, 并返回"""
        pivot_index = left
        pivot = arr[left]
    
        for i in range(left + 1, right + 1):
            if arr[i] < pivot:
                # 如果此处索引的值小于基准值, 基准值的位置后移一位
                # 并将后移一位的值和这个值交换, 让基准位置及之前的始终小于基准值
                pivot_index += 1
                if pivot_index != i:
                    arr[pivot_index], arr[i] = arr[i], arr[pivot_index]
    
        # 将基准值移动到正确的位置
        arr[left], arr[pivot_index] = arr[pivot_index], arr[left]
    
        return pivot_index
    
    
    if __name__ == '__main__':
        arr = []
        for i in range(10):
             arr.append(random.randint(1, 100))
        print arr
        quicksort(arr, 0, len(arr)-1)
        print arr
    

    相关文章

      网友评论

          本文标题:快速排序的python实现

          本文链接:https://www.haomeiwen.com/subject/nvueqttx.html