always_love_life 2022-07-27 09:30 采纳率: 20%
浏览 16

归并排序的数组复制问题

问题遇到的现象和发生背景

归并排序的数组复制,每次合并的时候复制和先排好序最后在sort函数里复制得到的值不一样

问题相关代码,请勿粘贴截图

这是错误的代码(即排序好再复制) public static void sort(int[] arr) {

int[] toarr = new int [arr.length];
        sort(arr, toarr, 0, arr.length-1);
        /*
         * for(int i = 0; i < toarr.length; i++) { arr[i] = toarr[i]; }
         */
    }

这是正确的代码 (每次排序都会复制一次)

public static void merge(int[] arr, int[] toarr, int left, int right) {
        int mid = (left + right) / 2;
        int i = left;
        int k = left;
        int j = mid + 1;
        while (i <= mid &&j <= right) {
            if(arr[i] <= arr[j]) {
                toarr[k++] = arr[i];
                i++;
            }
            else {
                toarr[k++] = arr[j];
                j++;
            }
        }
        while (i <= mid) {
            toarr[k++] = arr[i++];
        }
        while (j <= right) {
            toarr[k++] = arr[j++];
        }
        /*
         * while (left <= right) { arr[left] = toarr[left]; left++; }
         */
    }

运行结果及报错内容

错误结果(根本就没有排序)
3
1
4
2
7
6
8
9
5

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-07-27 09:59
    关注

    错误代码是个递归???sort函数内调用的sort函数原型怎么定义的啊

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月27日

悬赏问题

  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥20 汇川小型plc控制小米微电机
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题