美文网首页工作生活
快速排序 - 非递归

快速排序 - 非递归

作者: yingjieg | 来源:发表于2019-07-02 11:19 被阅读0次
arr = [4, 3, 2, 1, -1, 99, 12, 33, 99, 10]

print(arr)


def partition(arr: list, low: int, high: int, pivot: int):
    while low <= high:
        while arr[low] < pivot:
            low = low + 1

        while arr[high] > pivot:
            high = high - 1

        if low <= high:
            arr[low], arr[high] = arr[high], arr[low]
            low = low + 1
            high = high - 1

    return low


def quicksort(arr: list, low: int, high: int):
    stack = []

    stack.append(low)
    stack.append(high)

    while len(stack) > 0:
        h = stack.pop()
        l = stack.pop()

        if l >= h:
            continue

        pivot = arr[l]  # use first value as pivot

        p = partition(arr, l, h, pivot)

        if l < p:
            stack.append(l)
            stack.append(p - 1)

        if h > p:
            stack.append(p)
            stack.append(h)


quicksort(arr, 0, len(arr) - 1)


print(arr)

相关文章

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • PHP数组示例算法

    1、冒泡排序 2、归并排序 3、二分查找-递归 4、二分查找-非递归 5、快速排序 6、选择排序 7、插入排序

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 快速排序 - 非递归

  • 快速排序

    程序员小灰-快速排序 挖坑法 指针交换法 非递归实现

  • 快速排序

    python版本快速排序: 1. 简洁版递归: 2. 常见版本: 3. 算法导论版: 4. 非递归版:

  • 5.【排序】快速排序递归与非递归

    描述:题目链接:https://leetcode-cn.com/problems/sort-an-array/给定...

  • 排序——快排/归并(nlgn)

    快速排序一般是递归实现,但是递归有一个问题就是如果递归太深会导致栈溢出,而大部分的递归实现都有对应的非递归解决方案...

  • 常见算法的 Python 实现

    二分法查找 非递归版本: 递归方法实现: 冒泡排序 选择排序

  • 常见排序算法(6)--归并排序(非递归版)

    非递归归并排序算法 非递归排序与递归排序相反,将一个元素与相邻元素构成有序数组,再与旁边数组构成有序数组,直至整个...

网友评论

    本文标题:快速排序 - 非递归

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