堆排序
(升序)
建堆:将序列调整为一个大顶堆(每个节点都要满足父亲大孩子小)
(1)先把序列按照完全二叉树的排列方法写出来。
(2)从下往上、从左往右找到第一个非叶子结点开始,进行堆调整。如果父结点大于子结点,则不用调整;如果父结点小于子结点,则把父结点和子结点中较大的一个交换。如果交换后,下层不满足父大子小的条件需要再调整下面的节点。
(3)一趟调整完后根结点将是最大的数,删除根结点,将其他结点重新调整为大顶堆。
#删除结点:把最底层最右边的叶子的值赋给删掉结点后的那个孔,然后调整。
#插入结点:把新结点放在最底层最右边的位置,然后调整。
简单选择排序
(升序)
理解:从头至尾顺序扫描,选出最小的一个关键字和第一个关键字交换,接着从剩下的关键字中继续选择和交换。没选出一个就放到前面的有序序列,再处理后面的无序序列。
基数排序
理解:放置0~9十个“桶”,把关键字变成位数相同的数字,不够位数前面补0。从最低位开始,把最低位相同的关键字放进对应数字桶里,从0到9依次从桶的下面收集数字。然后往高位重复此操作。