码迷,mamicode.com
首页 > 编程语言 > 详细

最重要的算法

时间:2018-12-05 21:48:12      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:port   复杂   color   shuff   ret   lis   shuf   nlogn   shu   

快速排序

def quick_sort(li,left,right):
    if left<right:
        mid=partition(li,left,right) #首先给li中最左边的元素归位,返回归位后元素的索引 
        quick_sort(li,left,mid-1)  #接着给归位了的元素左边的,左端列表的,最左侧元素进行归位
        quick_sort(li,mid+1,right) #给归位了的元素的右边的,右端列表的,最左侧元素进行归位


def partition(li,left,right):
    tmp=li[left]
    while left<right:
        #从右边找比tmp小的
        while left<right and li[right]>=tmp: #当右边比tmp大时,一直找,直到找到比tmp小的数
            right-=1
        li[left]=li[right]  #当找到了比tmp小的数就把右边的值赋值给左边
        #从左边找比tmp大的
        while left<right and li[left]<=tmp: #当左边的数比tmp小时,一直找,直到找到比tmp大的数
            left+=1
        li[right]=li[left] #当找到了比tmp大的数,把左边的大数,赋值给右边

    li[left]=tmp
    return left

import random
l=list(range(0,13))
random.shuffle(l)
quick_sort(l,0,len(l)-1)
print(l)


时间复杂度:
    最优:O(n)
    最差:O(n^2)
    时间复杂度:O(nlogn)

 

最重要的算法

标签:port   复杂   color   shuff   ret   lis   shuf   nlogn   shu   

原文地址:https://www.cnblogs.com/djfboai/p/10073411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!