[归并排序]-Java实现归并排序

[归并排序]-Java实现归并排序,第1张

[归并排序]-Java实现归并排序

排序思想:分治思想,先将原数组一直二分为单个元素,然后按顺序进行合并,利用递归进行循环 *** 作。

编程思想:将数组看成是两个,left-mid(中间值) 和 (mid+1 - right)且将合并过程看成是合并两个有序表
时间复杂度:O(nlogn)

// 合并(合并两个有序表)
public void merge(int [] arr,int left, int mid,int right,int [] temp){
	int i =left;
	int j = mid + 1;
	int t =0;
	 
	 while(i <= mid && j <= right){
	 	if(arr[i] <= arr[j]){
	 		temp[t] = arr[i];
	 		t++;
	 		i++;
	 	}else(arr[i] > arr[j]){
	 		t++;
	 		j++;
	 	}
	 }
	while(i <= mid){
		temp[t] = arr[i];
		t++;
		i++;
	}
	while( j <= right){
		temp[t] = arr[j];
		t++;
		j++;
	}

	//将temp赋值到arr
	t = 0;
	int tempLeft = left;
	while(tempLeft <= right){
		arr[tempLeft] = temp[t];
		t++;
		tempLeft++;
	}
}


//分解
public int [] mergeSort(int [] arr, int left ,int right,int [] temp){
	int mid = (left + right)/2;
	//左递归
	mergeSort(arr,left,mid,temp);
	//右递归
	mergeSort(arr,mid+1,right,temp);
	//合并
	merge(arr,left,mid,right,temp);
	return arr;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4670967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存