java归并排序(最精简代码)
2012-10-01 00:00
399 查看
public class MergeSortTest { public void sort(int[] array, int left, int right) { if (left >= right) return; // 找出中间索引 int center = (left + right) / 2; // 对左边数组进行递归 sort(array, left, center); // 对右边数组进行递归 sort(array, center + 1, right); // 合并 merge(array, left, center, right); // 打印每次排序结果 for (int i = 0; i < array.length; i++) { System.out.print(array[i] + "\t"); } System.out.println(); } /** * 将两个数组进行归并,归并前面2个数组已有序,归并后依然有序 * * @param array * 数组对象 * @param left * 左数组的第一个元素的索引 * @param center * 左数组的最后一个元素的索引,center+1是右数组第一个元素的索引 * @param right * 右数组最后一个元素的索引 */ public void merge(int[] array, int left, int center, int right) { // 临时数组 int[] tmpArr = new int[array.length]; // 右数组第一个元素索引 int mid = center + 1; // third 记录临时数组的索引 int third = left; // 缓存左数组第一个元素的索引 int tmp = left; while (left <= center && mid <= right) { // 从两个数组中取出最小的放入临时数组 if (array[left] <= array[mid]) { tmpArr[third++] = array[left++]; } else { tmpArr[third++] = array[mid++]; } } // 剩余部分依次放入临时数组(实际上两个while只会执行其中一个) while (mid <= right) { tmpArr[third++] = array[mid++]; } while (left <= center) { tmpArr[third++] = array[left++]; } // 将临时数组中的内容拷贝回原数组中 // (原left-right范围的内容被复制回原数组) while (tmp <= right) { array[tmp] = tmpArr[tmp++]; } } public static void main(String[] args) { int[] array = new int[] { 5, 69, 12, 3, 56, 789, 2, 5648, 23 }; MergeSortTest mergeSortTest = new MergeSortTest(); mergeSortTest.sort(array, 0, array.length - 1); System.out.println("排序后的数组:"); for (int m = 0; m <= array.length - 1; m++) { System.out.print(array[m] + "\t"); } } }
相关文章推荐
- Lombok-极度精简Java代码的工具
- java插入排序(最精简代码)
- Java 改进简单加法器实现(代码精简)
- 排序基础之归并排序、快排、堆排序、希尔排序思路讲解与Java代码实现
- 使用Lombok精简java实体类代码
- 算法-java代码实现归并排序
- 插入排序及归并排序java代码实现及详细注释
- 归并排序--JAVA代码实现
- 算法代码实现之归并排序,Java实现,自顶向下与自底向上两种方式
- 归并排序java代码
- 归并排序Java代码
- 快速排序,归并排序,堆排序的java代码实现
- java直接生成zip压缩文件精简代码(跳过txt文件)
- java 算法之归并排序详解及实现代码
- 选择,插入,希尔,快速,堆,归并排序六种排序方式的Java 实现和性能对比(付代码)
- 归并排序 MergeSort Java代码
- 归并排序的原理及java代码实现
- java script发布时要精简代码
- 八大排序算法之-归并排序 java代码
- 归并排序快速排序java代码