合并排序代码
来源:互联网 发布:youtube网络无法连接 编辑:程序博客网 时间:2024/06/03 19:14
The mergeSort.java Program
// mergeSort.java
// demonstrates recursive mergesort
// to run this program: C>java MergeSortApp
import java.io.*; // for I/O
////////////////////////////////////////////////////////////////
class DArray
...{
private double[] theArray; // ref to array theArray
private int nElems; // number of data items
//----------------------------------------------------------
public DArray(int max) // constructor
...{
theArray = new double[max]; // create array
nElems = 0;
}
//----------------------------------------------------------
public void insert(double value) // put element into array
...{
theArray[nElems] = value; // insert it
nElems++; // increment size
}
//----------------------------------------------------------
public void display() // displays array contents
...{
for(int j=0; j<nElems; j++) // for each element,
System.out.print(theArray[j] + " "); // display it
System.out.println("");
}
//----------------------------------------------------------
public void mergeSort() // called by main()
...{ // provides workspace
double[] workSpace = new double[nElems];
recMergeSort(workSpace, 0, nElems-1);
}
//----------------------------------------------------------
private void recMergeSort(double[] workSpace, int
lowerBound,
int upperBound)
...{
if(lowerBound == upperBound) // if range is 1,
return; // no use sorting
else
...{ // find midpoint
int mid = (lowerBound+upperBound) / 2;
// sort low half
recMergeSort(workSpace, lowerBound, mid);
// sort high half
recMergeSort(workSpace, mid+1, upperBound);
// merge them
merge(workSpace, lowerBound, mid+1, upperBound);
} // end else
} // end recMergeSort
//----------------------------------------------------------
private void merge(double[] workSpace, int lowPtr,
int highPtr, int upperBound)
...{
int j = 0; // workspace index
int lowerBound = lowPtr;
int mid = highPtr-1;
int n = upperBound-lowerBound+1; // # of items
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[lowerBound+j] = workSpace[j];
} // end merge()
//----------------------------------------------------------
} // end class DArray
////////////////////////////////////////////////////////////////
class MergeSortApp
...{
public static void main(String[] args)
...{
int maxSize = 100; // array size
DArray arr; // reference to array
arr = new DArray(maxSize); // create the array
arr.insert(64); // insert items
arr.insert(21);
arr.insert(33);
arr.insert(70);
arr.insert(12);
arr.insert(85);
arr.insert(44);
arr.insert(3);
arr.insert(99);
arr.insert(0);
arr.insert(108);
arr.insert(36);
arr.display(); // display items
arr.mergeSort(); // mergesort the array
arr.display(); // display items again
} // end main()
} // end class MergeSortApp
- 合并排序代码
- 合并排序算法 C代码
- 浅谈合并排序(代码)
- 合并两个已排序数组(Python代码)
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 发一套最完整的直升机原理(绝对完整,绝对精华)
- 仙剑4的截图
- 基于S3C4510B型微处理器的最小系统设计
- 学习JTAG看的资料
- 简单排序及其性能比较
- 合并排序代码
- 希尔排序及代码实现
- 快速排序及代码实现
- SQL SEVER 2000安装的挂起问题及相关解决方案
- AJAX
- 你在网络红不红? 47%Google网友曾搜寻自己
- XP瘫痪恢复日记
- 开机突然出现"NTLDR is miss"该如何处理
- windbg调试应用程序