算法入门(三,,(NB三人组之一)快速排序(附加二叉树介绍))

不及小步无以至千里,不及小流无以成江河,下面开始上干货。

快速排序:(特点快)
思路:1,取第一个x元素,使其排列到对应的位置,2,数列被元素分成二块,左边比x小,右边比x大 3,递归完成排列

	def partition(ls,left,right):
    tmp=ls[left]#取左边元素
    while left <right: #设置终止条件
        while left<right and ls[right] >= tmp :#从右找比tmp小的数
            right-=1 #向左走一步

        ls[left]=ls[right]#把右边放到左边
        print(ls)#左边归位
        while left<right and ls[left] <=tmp:
            left+=1
        ls[right]=ls[left]#把左边放到右边
        print(ls)#右边归位
    ls[left]=tmp    #把tmp归位
    return left
def quick(ls,left,right):
    if left <right :
        mid=partition(ls,left,right)
        quick(ls,left,mid-1)
        quick(ls,mid+1,right)
ls=[3,2,4,7,8,9,6,7]
quick(ls,0,len(ls)-1)
print(ls)

现象:
在这里插入图片描述
快速排序效率:O(nlogn)

树结构:(树是一种可以递归定义的数据结构)
树是n个节点组成的集合:1,n=0为空树 2,n>0,那么存在1节点作为根节点,其节点可以分为m个集合,每个集合也是一棵树。
根节点:第一个分叉节点
叶子节点:不能分叉节点
树的深度(高度):看树有几层
树的度:树的度就是树分叉的数量(向下的分叉)
孩子节点/父节点:树结构下,上面的树为父,下面为子

二叉树:树的度不超过二的树(每个节点最多有二个孩子节点,二个孩子区分为左孩子节点与右孩子节点)
满二叉树:每个二叉树到达最大值
完全二叉树:叶子节点只能出现在最下层和次下层,并且最下层的节点都集中在该层最左边的若干位置的二叉树(满二叉树右边开始拿走几个,左边满的)

二叉树的存储方式:(表示方式:链式存储方式与顺序存储方式)
顺序存储方式:(列表来存储)
在这里插入图片描述
父节点和左边孩子下标关系:i=2i+1
父节点和右边孩子下标关系:i=2i+2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶光不负

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值