码迷,mamicode.com
首页 > 编程语言 > 详细

mergesort的java实现

时间:2015-09-18 18:42:33      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:merge sort

这是我第一次写博客,我也希望通过写博客的这个过程,与大家(也许认识,也许不认识,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实现

标签:merge sort

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!