自底向上的归并排序-转自算法C语言实现
来源:互联网 发布:up主如何赚钱知乎 编辑:程序博客网 时间:2024/05/16 17:31
package cn.ccnu.lzc;import java.util.Random;public class DownTopTwoWayMergeSort {/** * @param args * 自底向上的归并排序:归并排序主要是完成将若干个有序子序列合并成一个 * 完整的有序子序列;自底向上的排序是归并排序的一种实现方式,将一个无 * 序的N长数组切个成N个有序子序列,然后再两两合并,然后再将合并后的N/2 * (或者N/2 + 1)个子序列继续进行两两合并,以此类推得到一个完整的有序数组。 */public static void main(String[] args) {// TODO Auto-generated method stubint maxSize=16;TArray arr=new TArray(maxSize);for(int i=0;i<maxSize;i++){int n=new Random().nextInt(100);arr.insert(n);}arr.display();arr.MergeSort();arr.display();}}class TArray{private int[] theArray;private int nElems;public TArray(int max){theArray=new int[max];nElems=0;}public void insert(int value){theArray[nElems++]=value;}public void display(){for(int i:theArray){System.out.print(i+" ");}System.out.println();}public void MergeSort(){int[] workspace=new int[nElems];recMergeSort(workspace,0,nElems-1);}private void recMergeSort(int[] workspace, int lowerBound, int upperBound) {// TODO Auto-generated method stubint i,step;for(step=1;step<upperBound;step=2*step){for(i=0;i<=upperBound-step;i+=2*step){Merge(workspace,i,i+step,min(i+2*step-1,upperBound));}}}private void Merge(int[] workspace, int lowPtr, int highPtr, int upperBound) {// TODO Auto-generated method stubint lowBound=lowPtr;int mid=highPtr-1;int j=0;int n=upperBound-lowBound+1;while(lowPtr<=mid&&highPtr<=upperBound){if(theArray[lowPtr]<=theArray[highPtr]){workspace[j++]=theArray[lowPtr++];}else{workspace[j++]=theArray[highPtr++];}}while(lowPtr<=mid){workspace[j++]=theArray[lowPtr++];}while(highPtr<=upperBound){workspace[j++]=theArray[highPtr++];}for(j=0;j<n;j++){theArray[lowBound++]=workspace[j];}}private int min(int i, int upperBound) {// TODO Auto-generated method stubreturn (i<upperBound)?i:upperBound;}}
0 0
- 自底向上的归并排序-转自算法C语言实现
- 自底向上的归并排序算法
- 归并排序-自底向上(java实现)
- 算法代码实现之归并排序,Golang(Go语言)实现,自顶向下与自底向上两种方式
- 图示经典算法--自底向上的归并排序
- 算法之自底向上的归并排序
- 3-4 自底向上的归并排序算法
- 算法代码实现之归并排序,C/C++实现,自顶向下与自底向上两种方式
- 自底向上的归并排序
- 自底向上的归并排序
- 自底向上的归并排序
- 自底向上归并排序
- 算法入门之归并排序(自底向上方法)
- 算法系列—自底向上归并排序
- 采用队列实现自底向上链表归并排序
- 归并排序的自底向上改进-使用插入排序
- 算法代码实现之归并排序,Java实现,自顶向下与自底向上两种方式
- 自顶向下的归并排序和自底向上的归并排序
- 用锁实现SQLSERVER中并发控制--实现Oracle中select .... for update功能
- android手机实现摇一摇
- Crontab 详细用法 定时任务
- JavaWeb学习篇之----浏览器缓存问题详解
- CGLayer与CALayer
- 自底向上的归并排序-转自算法C语言实现
- 远程控制关键技术:屏幕控制之一(模拟鼠标)
- linspace函数matlab
- c语言中const关键字详解
- cat 命令
- android logcat的使用
- ActionScript 遮罩层
- bitbucket上传代码
- maven GAV查询