归并排序的基本原理
归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表。
实现思路
假设有有序数组a:[ 38,69,70,71 ],
和有序数组b:[ 11,17,28 ],
要使用归并排序来实现a和b的排序:
- 定义一个临时的数组temp,用于存放排序后的元素。其长度为a和b的长度总和。
- 比较a[ 0 ]与b[ 0 ]的大小,将小的值放到temp[ 0 ],大的值继续参与下次比较。
- 再比较a[ 0 ]与b[ 1 ]的大小,将小的值放到temp[ 1 ],大的值继续参与下次比较。
- 再比较a[ 0 ]与b[ 2 ]的大小,将小的值放到temp[ 2 ],大的值继续参与下次比较。
- 如果其中一个数组所有元素都完成了排序,那么,就把另外一个数组的所有剩余元素依次放到temp里。
示例代码
/**
* 归并排序
* 实现两个有序数组的合并排序。
*/
public class MergeSort {
private static int[] merge(int[] arrayA