美文网首页
python bubble_sort and quick_so

python bubble_sort and quick_so

作者: _PatrickStar | 来源:发表于2019-08-06 20:57 被阅读0次

'''
常见的排序算法
插入排序,希尔排序,直接排序,堆排序
冒泡排序,快速排序,归并排序,基数排序

给定一个列表,将列表进行排序,时间复杂度小于 O(n^2)
复杂度
1,时间复杂度:指算法在计算过程中所需要的计算工作量
2,空间复杂度:指算法在计算过程中所需要的内存空间

常见的时间复杂度
常数阶 O(1),对数阶O(log2n),线性阶O(n)
线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3)
随着问题的规模n不断的增大,上述的时间复杂度就不断地增大,
意味着算法的执行效率越低
'''

冒泡排序的实现 时间复杂度O(n^2)

相邻的两个数字进行比较,大的向下沉,最后一个元素是最大的

def bubble_sort(l):
    count=len(l)
    for i in range(0,count):
        for j in range(i+1,count):
            if l[i]>l[j]:
                #使用python特有的方法进行两数排序
                l[i],l[j]=l[j],l[i]
    return l

alist=[34,435,65,73,74,1,334]
bubble_sort(alist)
print(alist)

快速排序 时间复杂度O(nlog2n)

递归 列表取出第一个元素作为标准,把比第一个元素小的都放在左侧,大的方右侧

递归完成,排序结束

def quick_sort(qlist):
    if qlist==[]:
        return []
    else:
        first=qlist[0]
        #print(first)
        less=quick_sort([l for l in qlist[1:] if l<first])
        more=quick_sort([m for m in qlist[1:] if m>=first])
        return less + [first] +more
blist=quick_sort([23,46,75,14,32,67,99,58])
print(blist)

相关文章

网友评论

      本文标题:python bubble_sort and quick_so

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