申请空间,使其大小为两个已有序序列之和,该空间用于存放合并后的序列
声明两个指针,最初位置分别为两个有序序列的起始位置
比较两个指针所指向的元素,选择相对小的元素放入合并空间中,并移动指针到下一个位置...快速排序将数组排序的方式则是当两个子数组都有序时,整个数组也就是有序的了.
在归并排序中,递归调用发生在处理整个数组之前;而在快速排序中,递归调用发生在处理整个数组之后....为了保证堆有序,需要支持两个操作用于打破堆的状态,然后再遍历堆并按照要求将堆的状态恢复,这个过程叫做堆的有序化....堆的构造阶段,将原始数组重新组织安排进一个堆中.从右至左用sink()函数,构造子堆,数组的每个位置都已经是一个子堆的根节点.只需要扫描数组中的一半元素,因为我们可以跳过大小为1的子堆.最后在位置1上调用...在 JDK 中,Arrays.sort() 选择了根据不同的参数类型,来使用不同的排序算法.如果是原始数据类型则使用三向切分的快速排序,对引用类型则使用归并排序.
ps.限于篇幅,本次文章分了两篇,上篇包含