java学习之—并归排序

java

/**

* 并归排序

* Create by Administrator

* 2018/6/26 0026

* 下午 5:13

**/

public class DArray {

private long[] theArray;

private int nElens;

public DArray(int max){

theArray = new long[max];

nElens = 0;

}

public void insert(long value){

theArray[nElens] = value;

nElens++;

}

public void display(){

for (int i = 0; i < nElens; i++) {

System.out.print(theArray[i] + " ");

}

System.out.println("");

}

public void mergeSort(){

long[] workSpace = new long[nElens];

recMergeSort(workSpace,0,nElens-1);

}

private void recMergeSort(long[] workSpace, int lowerBound, int upperBound) {

if(lowerBound == upperBound){

return;

}else{

int mid = (lowerBound+upperBound) / 2;

recMergeSort(workSpace,lowerBound,mid);

recMergeSort(workSpace,mid+1,upperBound);

merge(workSpace,lowerBound,mid+1,upperBound);

}

}

private void merge(long[] workSpace, int lowerBound1, int mid1, int upperBound) {

int i = 0;

int lowerBound = lowerBound1;

int mid = mid1-1;

int n = upperBound-lowerBound+1;

while (lowerBound1 <= mid && mid1 <= upperBound){

if(theArray[lowerBound1] < theArray[mid1]){

workSpace[i++] = theArray[lowerBound1++];

}else{

workSpace[i++] = theArray[mid1++];

}

}

while (lowerBound1 <= mid){

workSpace[i++] = theArray[lowerBound1++];

}

while (mid1 <= upperBound){

workSpace[i++] = theArray[mid1++];

}

for (i = 0; i< n; i++){

theArray[lowerBound+i] = workSpace[i];

}

}

public static void main(String[] args) {

int maxSize = 100;

DArray array;

array = new DArray(maxSize);

array.insert(64);

array.insert(21);

array.insert(65);

array.insert(1);

array.insert(44);

array.insert(20);

array.insert(8);

array.insert(15);

array.insert(90);

array.insert(76);

array.insert(45);

array.insert(55);

array.display();

array.mergeSort();

array.display();

}

}

  

以上是 java学习之—并归排序 的全部内容, 来源链接: utcz.com/z/392985.html

回到顶部