//mid是left的最后一个元素,将两个有序序列排序整理
public void sSrot(List<Integer> list, int left, int mid, int right) {
List<Integer> tmpList = new ArrayList<Integer>();
int l = left;
int r = mid + 1;
while (l <= mid && r <= right) {
if (list.get(l) <= list.get(r)) {
tmpList.add(list.get(l++));
} else {
tmpList.add(list.get(r++));
}
}
while (l <= mid) {
tmpList.add(list.get(l++));
}
while (r <= right) {
tmpList.add(list.get(r++));
}
int i = left;
for (int now : tmpList) {
list.set(i++, now);
}
}
//递归进行排序
public void mergeSort(List<Integer> list, int left, int mid, int right) {
if (left < right-1) {
mergeSort(list, left, (left + mid) / 2, mid);
mergeSort(list,mid+1,(mid + right) /2,right);
}
sSrot(list,left,mid,right);
}
归并排序java实现
最新推荐文章于 2023-12-11 10:45:47 发布