Java 中的归并排序程序是使用最广泛、最高效的算法之一。合并排序基于分而治之技术,涉及将给定问题划分为多个子问题并独立解决每个子问题。当子问题解决后,我们将它们的结果结合起来得到问题的最终解决方案。合并排序算法可以使用递归来实现,因为它涉及到子问题而不是主要问题。
让我们考虑一个需要使用合并排序算法进行排序的未排序数组。以下是对包含值 18、8、4、13、10、12、7 和 11 的数组进行排序所涉及的步骤:
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
下面是一个代码示例,展示了 java 中合并排序的实现:
代码:
package com.edubca.sorting; public class MergeSort { private int[] array; private int[] tempMergedArr; private int length; public static void main(String a[]){ int[] inputArr = {18, 8, 4, 13, 10, 12, 7, 11}; MergeSort mergeSort = new MergeSort(); mergeSort.sort(inputArr); for(int i:inputArr){ System.out.print(i + " "); } } public void sort(int inputArr[]) { this.array = inputArr; this.length = inputArr.length; this.tempMergedArr = new int[length]; performMergeSort(0, length - 1); } private void performMergeSort(int lowerIndex, int higherIndex) { if (lowerIndex < higherIndex) { int middle = lowerIndex + (higherIndex - lowerIndex) / 2; // Sort the left side of the array call performMergeSort recursively performMergeSort(lowerIndex, middle); // Sort the right side of the array call performMergeSort recursively performMergeSort(middle + 1, higherIndex); // Merge subparts using a temporary array mergeData(lowerIndex, middle, higherIndex); } } private void mergeData (int lowerIndex, int middle, int higherIndex) { for (int i = lowerIndex; i <= higherIndex; i++) { tempMergedArr[i] = array[i]; } int i = lowerIndex; int j = middle + 1; int k = lowerIndex; while (i <= middle && j <= higherIndex) { if (tempMergedArr[i] <= tempMergedArr[j]) { array[k] = tempMergedArr[i]; i++; } else { array[k] = tempMergedArr[j]; j++; } k++; } while (i <= middle) { array[k] = tempMergedArr[i]; k++; i++; } } }
上面的代码将生成一个排序数组作为输出。
输出:
归并排序可以用在以下场景:
以下几点分析归并排序的复杂度:
以下几点将合并排序与其他算法进行比较:
文章的结论是,合并排序是算法中需要理解的一个重要概念。
以上是Java 中的归并排序程序的详细内容。更多信息请关注PHP中文网其他相关文章!