排序(归并排序)
【排序(归并排序)】归并排序运用分治的思想,把大的问题逐部分解成能够解决的小问题.
时间复杂度为nlogn.
Ps:使用引用传递的方法把临时数组赋值进去,这样就可以没必要每次都生成一个新的数组.
代码:
/**
* Created by Hammy on 2018/3/1.
*/
public class MergeSort
{
/**
* 二路归并排序
*/public static void sort(int[] array){
int[] tempArray = new int[array.length];
mergeSort(array,tempArray,0,array.length-1);
}private static void mergeSort(int[] array,int[] tempArray,int left,int right){
if(left>=right)
return;
int mid=left+((right-left)>>1);
mergeSort(array,tempArray,left,mid);
mergeSort(array,tempArray,mid+1,right);
merge(array,tempArray,left,mid,right);
}private static void merge(int[] array,int[] tempArray,int left,int mid,int right){
int tempIndex = left;
int copyIndex = left;
int rightStart = mid+1;
while(left<=mid&&rightStart<=right){
if(array[left]
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长