归并排序Merge Sort(其二)自底向上
基本思想:
从左到右把数组划分成几个小段,两个元素一小段,然后进行归并排序的过程,当归并排序完一轮后,再四个元素一小段的进行归并排序,以此进行下去直至n个元素一小段时整个数组有序。
注:
在这个过程中我们不需要递归,只需要迭代就可以完成归并排序。
/**
* 自底向上的归并排序,无需递归,只需迭代
* @param arr
* @param n
*/
public void mergeSortBU(E[] arr, int n){
for(int sz =1; sz<=n; sz +=sz){
//第一轮归并排序先看1个元素,再看2个元素,再看4个元素,以此类推,直到等于n
for(int i = 0; i+sz