python实现冒泡排序算法的非递归版本_[算法] 归并排序实现(递归版本和非递归版本)...

发布于:2021-10-26 17:19:02

归并排序实现


一、递归版本


在递归版本的实现当中我们不需要太在意边界问题。


public void merge(int []num,int start, int mid, int end){


int [] left = new int[mid-start+1];


int []right=new int[end-mid];


for(int i=0;i


for(int i=0;i


int leftindex = start, rightindex = mid+1;


int index = start;


while(leftindex<=mid&&rightindex<=end){


if(left[leftindex]


num[index]=left[leftindex];


leftindex++;


}else{


num[index]=right[rightindex];


rightindex++;


}


index++;


}


while(leftindex<=mid) num[index++]=left[leftindex++];


while(rightindex<=end) num[index++]=right[rightindex++];


}


public void mergeSort(int []num,int start,int end){


//如果只有一个元素那么,说明已经排好序了


if(start


int mid = (start+end)/2;


mergeSort(num,start,mid);


mergeSort(num,mid+1,end);


merge(num,start,mid,end);


}


}


二、非递归版本


通过设置不同的gap,使用自底向上的方式来进行排序,较大的gap利用较小的gap的排序结果


void merge();同上


public void mergeSort-interate(int []num){


for(int gap = 1;gap<=num.length;gap*=2){


int index = 0;


while((index+2*gap)


merge(num,index,index+gap-1,index+2*gap-1);


index = index + 2*gap;


}


//尾部可能不足2*gap的长度


if(index+gap


merge(num,index,index+gap-1,num.length-1);


}


}

相关推荐

最新更新

猜你喜欢