欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

mergeSort

发布时间:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mergeSort 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
/*** 借助额外数组*/ import java.util.Arrays;public class MergeSort {public static void main(String[] args) {int[] arr = { 1, 2, 5, 7, 3, 6, 4, 8, 9, 0 };mergeSort(arr);System.out.println(Arrays.toString(arr));}public static void mergeSort(int[] a) {int[] b = new int[a.length];mergeSort(a, b, 0, a.length - 1);}private static void mergeSort(int[] a, int[] tmp, int left, int right) {if (left < right) {int center = (left + right) / 2;mergeSort(a, tmp, left, center);mergeSort(a, tmp, center + 1, right);merg(a, tmp, left, center + 1, right);}}private static void merg(int[] a, int[] tmp, int leftPos, int rightPos, int rightEnd) {int leftEnd = rightPos - 1;int tmpPos = leftPos;int numElements = rightEnd - leftPos + 1;while (leftPos <= leftEnd && rightPos <= rightEnd)tmp[tmpPos++] = a[leftPos] <= a[rightPos] ? a[leftPos++] : a[rightPos++];while (leftPos <= leftEnd)tmp[tmpPos++] = a[leftPos++];while (rightPos <= rightEnd)tmp[tmpPos] = a[rightPos++];for (int i = 0; i < numElements; i++, rightEnd--) {a[rightEnd] = tmp[rightEnd];}} }

总结

以上是生活随笔为你收集整理的mergeSort的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。