首页 > 编程语言 > 详细

mergesort的java实现

时间:2015-09-18 18:41:29      阅读:176      评论:0      收藏:0      [点我收藏+]

这是我第一次写博客,我也希望通过写博客的这个过程,与大家(也许认识,也许不认识,never mind)分享我的经验和感受。

这是mergesort的java实现。刚开始对sort进行一些了解。

所以参照网上的一些经验和分享,自己写了写。并整合了下来。


package sorting;

public class MyMergeSort {

private int[] array;

private int[] tempMergArr;

private int length;


public static void main(String a[]){

int[] inputArr = {45,230,11,89,77,98,4,28,65,43};

MyMergeSort mms = new MyMergeSort();

mms.sort(inputArr);

for(int i:inputArr){

    System.out.print(i);

    System.out.print(" ");

   }

}

public void sort(int inputArr[]) {

this.array = inputArr;

this.length = inputArr.length;

this.tempMergArr = new int[length];

System.out.println(tempMergArr);

doMergeSort(0, length - 1);

}


private void doMergeSort(int lowerIndex, int higherIndex) {

if (lowerIndex < higherIndex) {

int middle = lowerIndex + (higherIndex - lowerIndex) / 2;

// Below step sorts the left side of the array

doMergeSort(lowerIndex, middle);

// Below step sorts the right side of the array

doMergeSort(middle + 1, higherIndex);

// Now merge both sides

mergeParts(lowerIndex, middle, higherIndex);

}

}


private void mergeParts(int lowerIndex, int middle, int higherIndex) {


for (int i = lowerIndex; i <= higherIndex; i++) {

tempMergArr[i] = array[i];

}

int i = lowerIndex;

int j = middle + 1;

int k = lowerIndex;

while (i <= middle && j <= higherIndex) {

if (tempMergArr[i] <= tempMergArr[j]) {

array[k] = tempMergArr[i];

i++;

} else {

array[k] = tempMergArr[j];

j++;

}

k++;

}

while (i <= middle) {

array[k] = tempMergArr[i];

k++;

i++;

}


}

}


mergesort的java实现

原文:http://8193923.blog.51cto.com/8183923/1696101

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!