您的位置:首页 > 其它

归并排序

2016-08-15 16:17 316 查看
class MergeSort {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int[] array = new int[]{7,3,43,5,65,7,8,98,90,5,345,35,34};
int[] tmp = new int[array.length];
mergeSort(array, tmp, 0, array.length-1 );
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}

}

public static void merge(int[] arry, int[] tmp, int begin, int stop){

if(begin >= stop) return;
int mid = (begin+stop)/2;
int i = begin;
int j = mid+1;
int s = 0;

while(i <= mid && j <= stop){
if(i <= mid && arry[i] <= arry[j] ){
tmp[s++] = arry[i++];
}
if(i <= mid && arry[i] >= arry[j] ){
tmp[s++] = arry[j++];
}
}

while(i <= mid){
tmp[s++] = arry[i++];
}

while(j <= stop){
tmp[s++] = arry[j++];
}

for (int k = 0; k <= stop - begin; k++) {
arry[begin + k] = tmp[k];

}

}

public static void mergeSort(int[] array,int[] tmp, int begin, int stop ){

int mid = (begin +stop ) / 2;
if(begin >= stop) return;
mergeSort(array, tmp, begin, mid);	//递归将左侧排序
mergeSort(array, tmp, mid+1, stop);	//递归将右侧排序
merge(array, tmp, begin, stop);		//合并begin到stop区间的数据

}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: