Java实现初级排序算法之——归并排序算法

算法思想:

将两个有序的数组归并成一个更大的有序数组。

代码实现:

package com.example;

/**
 * 
 * @Description : 归并算法对数组排序
 * @ClassName   : MergeSort
 * @author      : RelaxOne
 * @date        : 2018年8月18日 下午4:49:41
 */
public class MergeSort {

	private static Double[] aux;
	
	public static void sort(Double[] arr, int start, int end){
		if(end <= start) {
			return;
		}
		int mid = start + (end - start) / 2;
		
		sort(arr, start, mid);
		sort(arr, mid+1, end);
		
		merge(arr,start,mid,end);
	}
	
	public static void merge(Double[] arr, int start, int mid, int end){
		for(int k=start;k end) {
				arr[k] = aux[i++];
			}else if(aux[j] < aux[i]) {
				arr[k] = aux[j++];
			}else {
				arr[k] = aux[i++];
			}
		}
	}
	
	/**
	 * 
	 * @Description: 按升序方式排列数组
	 * @author : RelaxOne
	 * @date   : 2018年8月18日
	 * @param arr
	 * @return
	 */
	public static Double[] sort_up(Double[] arr) {
		int len = arr.length;
		Double[] result =  new Double[len];
		int block, start;
		
		for(block = 1; blockarr[start2]?arr[start1++]:arr[start2++];
				}
				while(start1 < end1) {
					result[low++] = arr[start1++];
				}
				while(start2 < end2) {
					result[low++] = arr[start2++];
				}
			}
			Double[] temp = arr;
			arr = result;
			result = temp;
		}
		return arr;
	}
}

测试代码:

package com.example;

public class Test {
	public static void main(String[] args) {
		Double[] arr = new Double[] {1.2,-4.2,2.5,3.8,1.9};
		arr = MergeSort.sort_down(arr);
		printArray(arr);
	}
	
	public static void printArray(Double[] arr) {
		for(int i=0;i

测试结果:Java实现初级排序算法之——归并排序算法_第1张图片

 

你可能感兴趣的:(算法,java,归并算法)