zoukankan      html  css  js  c++  java
  • 快速排序

      快速排序是一种排序方式,通过先找到一个中间点(一般我们拿列表的第一个值作为中间点),根据这个中间点按顺序与其他数值进行比较,最后将这个列表切分为3部分,比他大的值列表、比他小的值列表和中间值所在的位置。

      如图,我们把55这个值拿出之后,现在这个位置是个空。我们从右侧开始比较,13 比55小,所以将13放到第一个位置。现在,最后一项是个空,所以右侧比较停止,从左侧开始比较。若是遇到比中间值大的就放到右侧,因为只放过去了,所以为空,又需要从右侧比较,如此。。。

      代码实现

    def quiteSort(alist,start,end):
        low = start
        height = end
        
        if low >= height:
            return
        mid = alist[low]
        while low < height:
            #从右往左进行判断
            while low < height:
                if alist[height] >= mid:
                    height -= 1
                else:
                    alist[low] = alist[height]
                    break
            while low < height:
                if alist[low] < mid:
                    low += 1
                else:
                    alist[height] = alist[low]
                    break
        alist[low] = mid
        quiteSort(alist,start,low-1)
        quiteSort(alist,low+1,end)
        
    l = [55,40,60,38,80,99,5,13]
    quiteSort(l,0,len(l)-1)
    print(l)
  • 相关阅读:
    ZOJ 3018
    poj2464
    Gauss
    【C】关于内存地址
    【C】typedef与define的区别
    C位移操作
    操作系统使用批处理文件更改网络配置
    【Linux】查看某个进程的线程数量(转)
    数据结构快速排序
    C++Explanation of ++val++ and ++*p++ in C
  • 原文地址:https://www.cnblogs.com/chenzhiming/p/11106379.html
Copyright © 2011-2022 走看看