排序算法概述

插入排序:认为第一个元素有序,后面元素挨个和前面有序的元素比较,放到有序位置中。最好O(n),最坏O(n^2)
希尔排序:按照固定的增量位置的元素进行插入排序。O(n^1.3) 

选择排序:认为第一个元素有序,后面元素不是挨个选,是 选择 最小/最大值放到有序位置中。最好最坏O(n^2)
冒泡排序:从前两个元素开始,两两临近的元素进行比较,小的往前移动。最好O(n),最坏O(n^2)
快速排序:两个指针。O(nlog2n)
堆排序:完全二叉树结构。要看向下和向上怎么调整。O(nlog2n)

        调整:对于一个完全二叉树,如果是满二叉树,每一层节点个数为上一层的二倍,再加上根节点,最后一层节点数量是其上面每一层节点总数+1。所以最后一层第一个叶子节点的索引为节点总数÷2(根节点索引为0),所以最后一个非叶子结点的索引是最后一层第一个叶子结点的索引-1。对于不满的完全二叉树也可用此方法进行计算。所以对于堆的调整,就是最后一个非叶子节点开始,比较其左右孩子节点与它的大小关系,并进行位置交换。
        大根堆:每个节点的值都大于或者等于其左右孩子节点的值。无序数组构造成大根堆,循环删除堆顶元素,移到尾部,调整剩余元素形成新的堆。最终得到升序序列。
        小根堆:同上。最终得到降序序列。

堆排序算法图解,易懂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值