您的位置:首页 > 编程语言 > Java开发

Java基础总结 - 数组排序之归并排序

2017-10-22 18:36 435 查看
Java基础总结 - 数组排序之归并排序

这篇文章只是把大学记的笔记整理到博客,方便自己查看,不保证权威性(•̀ᴗ•́)و ̑̑

import java.util.Arrays;
/**
* 归并排序是先把数组拆散到知道一个元素,然后在进行合并操作。
*
* 	1  1  1  1  1  1
*      1 1 1      1 1 1
*      1 1   1     1 1   1
*     1  1   1    1   1   1
*      1 1   1       11  1
*      1 1 1     1 1 1
*      1  1  1  1  1  1
*
* @author CL-computer
*
*/
public class MergeSort {
public static void main(String[] args) {
int[] nums = {1,5,7,1,6,9,8,5};
mergeSortMetohd(nums);
System.out.println(Arrays.toString(nums));
}

public static void mergeSortMetohd(int[] nums) {
int[] temp = new int[nums.length];
divide(nums,0,nums.length-1,temp);
}

public static void divide(int[] nums, int start, int end, int[] temp) {
int mid = (start+end)>>1;
if(start<end){
divide(nums,start,mid,temp);
divide(nums,mid+1,end,temp);
merge(nums,start,mid,end,temp);
}
}

public static void merge(int[] nums, int start, int mid, int end,
int[] temp) {

int x = start;
int y = mid+1;
int index = start;
while(x<=mid&&y<=end){
if(nums[x]<nums[y]){
temp[index++] = nums[x++];
}else{
temp[index++] = nums[y++];
}
}
while(x<=mid){
temp[index++] = nums[x++];
}
while(y<=end){
temp[index++] = nums[y++];
}
index = start;
while(start<=end){
nums[start++]=temp[index++];
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: