排序算法五:归并排序
效率仅次于快排的一种排序算法, 一般用于对总体无序,但是各子项相对有序的数列 思想: 采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序 平均时间复杂度为 nlog2n ,空间复杂度为n,稳定 public class Merge { /** * 对数组进行排序 * @param arr:要排序的数组 * @param left:数组的开始下标 * @param right:数组的终止下标 */ public void sort ( int [ ] arr , int left , int right ) { if ( left == right ) return ; int mid = ( left + right ) / 2 ; //记录中间位置下标,将数组分成两半 sort ( arr , left , mid ) ; //左边排序 sort ( arr , mid + 1 , right ) ; //右边排序 merge ( arr , left , mid + 1 , right ) ; } /** *归并排序 * @param arr:要排序的数组 * @param leftptr:排序的左指针 * @param rightptr:排序的右指针 * @param bound:边界 */ public