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

快速排序 python实现

作者: clshinem | 来源:发表于2017-05-18 17:08 被阅读0次

每一次写快排都会出现很多问题,我也是很郁闷······
总结一下,顺便看一下这次会不会顺利一些😜

def quick_sort(a,lo,hi):
    if lo < hi:
        tag = partition(a,lo,hi)
        quick_sort(a,lo,tag-1)
        quick_sort(a,tag+1,hi)
    return a
def partition(a,lo,hi):
    i = lo
    j = hi
    temp = a[lo]
    while i < j:
        while i <j and a[j] >= temp:
            j -= 1
        while i< j and a[i] <= temp:
            i += 1
        a[j],a[i] = a[i],a[j]
    a[i],a[lo] = a[lo],a[i]
    return i
遇见的错误

def quick_sort(a) def partition(a) 想要之传入一个参数,所以中间用了quick_sort(a[lo:mid+1]) 测试用例后发现并没有进行排序,debug后找到错误:list切片后产生的是一个新对象,对新对象进行排序,不会对原对象产生作用。ps:我的归并排序写的时候也是用了切片所以这边有点混乱,回看了我的归并才发现归并返回的是 return merge(left,right)返回的是一个新数组,而测试用例的时候是 print merge_sort(a)

a[j] >= temp这里要是大于等于,两个指针时一定要找到大于或者小于的那个数的。如果没有等于的话,遇见数组中有相同的值得时候会出现问题

while i < j 这个条件有一次写的时候就没有写,导致出来的结果肯定不对啦,找了半天。还是快排的原理有些混乱。不加这个条件,只能找到一对比temp值小的数然后进行交换。而快排的一次排序过程是要使得i前面的数都比i小,后面的都比i

ps:事实证明并不顺利,不是缺这个就缺那个,什么时候才能徒手写一点都没错啊啊啊啊啊

相关文章

  • 快速排序的Python实现

    目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策...

  • 排序

    排序 快速排序 归并排序 计数排序 Python实现 理解 详解 稳定:如果a原本在b前面,而a=b,排序之后a仍...

  • 七大排序算法的 Python

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • 八大排序算法的 Python 实现(转)

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • Python 实现七大排序算法

    本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。 先整体看一下...

  • 快速排序算法的实现( Golang 和 Python )

    Python 中一行代码搞定快排 Python 快速排序 Golang 快速排序

  • 快速排序的Python 简单实现

    快速排序的Python 简单实现[https://www.cnblogs.com/clemente/p/11168...

  • python实现快速排序(QuickSort)

    python实现【快速排序】(QuickSort) 算法原理及介绍 快速排序的基本思想:通过选择一个关键字,一趟排...

网友评论

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

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