zoukankan      html  css  js  c++  java
  • 归并排序的学习与java实现

    import java.util.Arrays;
    public class Sort_Merge {
    //数组对比展示
    public static void main(String[] args) {
    int[] arr = {9,8,7,6,5,4,3,2,1,0};
    System.err.println("未排序的数组:" + Arrays.toString(arr));
    sort_merge(arr, 0, arr.length - 1);
    System.err.println("排好序的数组:" + Arrays.toString(arr));
    }
    //循环调用
    private static void sort_merge(int[] arr, int start, int end) {
    int middle = (start + end) / 2;
    if (start < end) {
    sort_merge(arr, start, middle);  //根据下标将数组逻辑拆分
    sort_merge(arr, middle + 1, end);  //根据下标将数组逻辑拆分
    merge(arr, start, middle, end);   //对某递归层数下两个数组合并
    }
    }
    private static void merge(int[] arr, int start, int middle, int end) {
    // 定义临时数组及指针
    int[] temp = new int[end - start + 1];
    int i = start; // 左
    int j = middle + 1; // 右
    int t = 0; // 临时数组指针
    // 两个子数组进行比较,将较小的元素放入临时数组中,同时对应数组指针+1;
    while (i <= middle && j <= end) {
    if (arr[i] < arr[j]) {
    temp[t++] = arr[i++];
    } else {
    temp[t++] = arr[j++];
    }
    }
    // 如果右数组先比较完成,即左数组仍有元素,将所有元素直接存入临时数组,反之亦然;
    while (i <= middle) {
    temp[t++] = arr[i++];
    }
    while (j <= end) {
    temp[t++] = arr[j++];
    }
    // 将临时数组覆盖原数组对应下标的数据
    for (int k = 0; k < temp.length; k++) {
    arr[k + start] = temp[k];
    }
    }
    }
  • 相关阅读:
    htmlUnil-2.33 jar包
    HtmlUnil 不兼容问题
    Java 网页抓取 工具类
    浏览器不兼容
    Chrome常用调试技巧1
    关于社交网络的思考
    google浏览器历史旧版
    EJB是什么Java使用EJB容器的详细概述
    何必言精通——十年杂感(转载)
    搜索优化—如何在Google搜索引擎上排名靠前Google左侧排名
  • 原文地址:https://www.cnblogs.com/chc-blog/p/8117766.html
Copyright © 2011-2022 走看看