java实现的归并排序(java)
来源:互联网 发布:帝国整站源码 编辑:程序博客网 时间:2024/06/05 03:04
public class MergerSortor {public static void main(String[] args) {int[] a = new int[] { 8, 9, 3 };System.out.println("排序前得数组: " + Arrays.toString(a));System.out.println("排序后得数组: " + Arrays.toString(MergerSortor.mergerSort(a)));}/** * 对数组进行归并排序 * * @param * @param arr */public static int[] mergerSort(int[] arr) {return mergeSort(arr, 0, arr.length - 1);}/** * 重载方法 * * @param dest 目标数组 * @param src 源数组 * @param low 开始索引 * @param high 结束索引 */public static int[] mergeSort(int[] src, int lowIndex, int highIndex) { // 当元素只有一个的时候, 直接返回.(分治思想中的问题的求解,相当递归结束条件)if (highIndex == lowIndex) { return null;} else {// 将原问题分解为n个小问题int middleIndex = (lowIndex + highIndex) >> 1;// 合并问题的解mergeSort(src, lowIndex, middleIndex);// 对左半部分进行排序mergeSort(src, middleIndex + 1, highIndex);// 对有半部分进行排序merge(src, lowIndex, middleIndex, highIndex);// 合并左右有序部分return src;}}/** * 归并已经排序好的数组 * * @param * @param src * @param low * @param mid * @param high * @param desc */public static void merge(int[] src, int startIndex, int middleIndex, int endIndex) {int[] dest = new int[endIndex - startIndex + 1];int leftIndex = startIndex; // 待合并左边部分的起始索引int rightIndex = middleIndex + 1; // 待合并右边部分的起始索引int destIndex = 0; // 目标数组起始索引while (leftIndex <= middleIndex && rightIndex <= endIndex) {if (src[leftIndex] < src[rightIndex]) {dest[destIndex++] = src[leftIndex++];} else {dest[destIndex++] = src[rightIndex++];}}while (leftIndex <= middleIndex) {dest[destIndex++] = src[leftIndex++];}while (rightIndex <= endIndex) {dest[destIndex++] = src[rightIndex++];}System.arraycopy(dest, 0, src, startIndex, dest.length);}}
0 0
- java实现的归并排序
- 归并排序的java实现
- 归并排序的Java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- 归并排序的java实现
- Java实现的归并排序
- Java归并排序的实现
- 归并排序的Java实现
- [排序算法]--归并排序的Java实现
- 排序算法的java实现-归并排序
- java实现的归并排序(java)
- 归并排序Java实现
- Java实现归并排序
- Java实现归并排序
- 归并排序Java实现
- 归并排序JAVA实现
- 获取表数据的插入SQL
- jquery的clone用法
- 大话设计模式-3.单一职责 原则
- Android之Animation全介绍
- linux下的分区方法
- java实现的归并排序(java)
- iterm2 配色
- Oracle中的虚拟表作用
- 数据结构 - 堆排序(heap sort) 详解 及 代码(C++)
- 用html实现文件路径选择功能
- Jquery 各种弹出框举例
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- 基于TCP网络程序设计(客户机/服务器模式的通信)
- WebDriver如何切换到新打开的窗口中