美文网首页
递归实现快速排序

递归实现快速排序

作者: 米酒真香 | 来源:发表于2018-10-11 16:08 被阅读10次
def qs(arr):
    if len(arr) <= 1: return arr
    return qs([i for i in arr[1:] if i < arr[0]]) + arr[0:1] + qs([i for i in arr[1:] if i >= arr[0]])

list0 = [1,2,5,3,7,9,33,2,25,99,0,-2,-66]

print(qs(list0))

1,判断列表长度,如果只有1个元素或者是空列表,直接原样返回
2,取列表的第一个元素为参照物,遍历列表的其余每一个元素,比参照物小的放在参照物左边,大的放右边,递归操作,最后返回。
注意中间的参照物arr[0:1],不能写成arr[0]。因为arr[0]int类型,arr[0:1]是列表,可以参与列表运算。


选择排序:

L = [1,1,4,3,6,5,7,8,3,2,9,0]

def select_sort(L, asc=True):
    for i in range(len(L)-1):
        for j in range(i+1, len(L)):
            if L[i] >= L[j]:
                L[i], L[j] = L[j], L[i]
    if asc:
        return L
    else:
        L.reverse()
        return L
a = select_sort(L)

冒泡排序:

def bubble_sort(L, asc=True):
    for i in range(len(L)-1):
        for j in range(len(L)-1-i):
            if L[j] >= L[j+1]:
                L[j],L[j+1] = L[j+1],L[j]
    if asc:
        return L
    else:
        L.reverse()
        return L
a = bubble_sort(L)
print(a)

相关文章

  • 2020-08-21 算法合集

    1. 冒泡排序 2.选择排序 3. 插入排序 4. 希尔排序 5. 归并排序(递归实现) 6. 快速排序(递归实现...

  • 三大排序算法

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

  • 排序

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

  • 3快速排序算法(Java语言)

    1.快速排序的特点: 1.分组,递归 2.代码实现: main方法: 排序方法...

  • 快速排序&快速排序与归并排序的对比

    快速排序算法 快速排序算法是从上到下解决问题使用递归实现,通过巧妙的方式,实现原地排序 分析时间复杂度O(nlog...

  • 看图说话排序算法之冒泡排序

    排序算法的种类非常多,这里总结冒泡排序和对冒泡排序的改进---快速排序的循环实现和递归实现。 一丶冒泡排序 假设待...

  • 快速排序的递归和非递归实现

    排序算法中很重要的快速排序 递归实现方式 递归实现方式的不同在于分区函数的不同 双向循环指针式,原理是利用左右指针...

  • 递归实现快速排序

    1,判断列表长度,如果只有1个元素或者是空列表,直接原样返回2,取列表的第一个元素为参照物,遍历列表的其余每一个元...

  • 快速排序(递归实现)

  • 快速排序-递归实现

    ** * 快速排序 * */ public class QuickSortTest { public static...

网友评论

      本文标题:递归实现快速排序

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