java实现合并排序算法,java归并排序算法排序数组
什么是合并排序?
归并是通过递归和分治技术将数据序列分成越来越小的半子表,然后对半子表进行排序,最后通过递归将排序后的半子表归并成越来越大的有序序列。
核心理念
将两个有序序列合并成一个大的有序序列。通过递归,逐层归并,也就是归并。
(推荐教程:java快速入门)
实施代码:
导入Java . util . arrays;
/**
* @作者神-蒋
* @日期2020年1月13日
*/
//合并排序,时间复杂度为O(N*logN),空间复杂度为O(N)
公共类MergeSort {
public static void merge sort(int[]arr,int start,int end) {
//各个击破的结束条件
if (start=end) {
返回;
}
//确保开始和结束的中间值不会溢出。
int mid=start((end-start)1);
//递归排序和合并
MergeSort(arr,start,mid);
MergeSort(arr,mid 1,end);
Merge(arr,start,mid,end);
}
//合并
public static void Merge(int[] arr,int start,int mid,int end) {
int[]temp=new int[end-start 1];
int p1=start
int p2=mid 1;
int p=0;
while (p1=mid p2=end) {
if (arr[p1] arr[p2]) {
temp[p]=arr[p2];
}否则{
temp[p]=arr[P1];
}
}
while (p1=mid) {
temp[p]=arr[P1];
}
while (p2=end) {
temp[p]=arr[p2];
}
for(int I=0;I温度长度;i ) {
arr[I start]=temp[I];
}
}
公共静态void main(String[] args) {
int[] a={2,4,6,1,3,7,9,8,5 };
MergeSort(a,0,a . length-1);
system . out . println(arrays . tostring(a));
}
}运行结果:
如何解决写爬虫IP受阻的问题?立即使用。
推荐视频教程:java视频教程以上是如何用java实现合并和排序的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。