一、解题思路:
合并有序序列 :
先拆分,再合并,在合并过程中借助临时空间进行排序 拆分:从中间位置拆开,分成左右两部分,继续进行拆分,直到数据拆分成独立时停止 合并:从哪儿拆开借助临时空间写回哪儿
二、Java代码:
import java.util.Arrays;
//归并排序
public class guibing {
public static void main(String[] args) {
int[] arr = new int[] {10,5,2,8,4,6};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr,int right,int left) {
if(left==right) {
return;
}
int mid =(left+right)/2;
sort(arr,left,mid);
sort(arr,mid+1,right);
merge(arr,left,mid,right);
}
public static void merge(int[] arr,int left,int right,int mid) {
int s1=left;
int s2=mid+1;
int[] temp=new int[right-left+1];
int index=0;
while(s1<=mid &&s2<=right) {
if(arr[s1]<arr[s2]) {
temp[index]=arr[s1];
index++;
s1++;
}
else {
temp[index]=arr[s2];
index++;
s2++;
}
}
while(s1<=mid) {
temp[index]=arr[s1];
index++;
s1++;
}
while(s2<=right) {
temp[index]=arr[s2];
index++;
s2++;
}
for(int j=0;j<temp.length;j++) {
arr[left+j]=temp[j];
}
}
}
1000

被折叠的 条评论
为什么被折叠?



