mergesort

    0热度

    1回答

    我试图用合并排序来解决这个问题,但是我的解决方案出了问题。我在合并数组时检查了反转次数。 有人可以帮我找到问题吗? void merge(int arr[], int l, int m, int r) { int n1=m-l+1; int n2=r-m; int left[(n1+1)]; int right[(n2+1)]; for(int

    -2热度

    1回答

    编辑:这绝不是我以前的问题的重复。我的代码已经相应地改变了我从前一个线程收到的答案,而且我仍然收到这些错误,这些错误与我上次提到的不一样。 我在写代码来排序用户使用合并排序输入的区间。它从一个用户输入,它存储在一个结构interval中,用来按升序排序。它使用正值和负值来检查间隔侧是打开还是关闭,但与正在执行的代码无关。下面是我的代码和我得到的输出类型的示例。提前感谢大家的帮助。 #include

    1热度

    1回答

    来自维基百科,https://en.wikipedia.org/wiki/Merge_algorithm#Application 在图中,我们假设我们考虑中间一行数字(如果有人可以在这里发布图片会有所帮助)。如果我将其修改为: 合并38和27,然后按升序对数字进行排序。 (27,38) 将上面的结果与43合并,然后按升序对数字进行排序。 (27,38,43) 将上面的结果与3合并,然后按升序对数字

    1热度

    1回答

    如果我有ķ排序的单链表,并通过每个列表的最大元素(在列表的最后),会有什么大O(运行时间/时间复杂度)是它们排序(归并) ?假设列表1〜k具有不同的大小:n_1〜n_k。我在想O(k * log(MAX(n_1〜n_k))),但不确定我是如何或为什么来到这个思路。

    6热度

    1回答

    日安SO社区, 我目前进行的实验相结合归并和插入排序一个CS的学生。据了解,对于某个阈值,S,InsertionSort的执行时间比MergeSort快。因此,通过合并两种排序算法,总运行时间将得到优化。 但是,在运行实验多次后,使用1000的样本大小和不同大小的S,实验结果并没有给出明确的答案。下面是获得更好的效果的照片(注意时间一半的结果不明确): 现在,3500样本大小尝试相同的算法代码:

    0热度

    2回答

    我意识到我没有把我的临时点返回到任何东西,但我能做些什么来解决这个问题? 现在它排序正确,但是当它排序下一层的一半时,它们仍然未排序。 UNSORTED POINTS: (-2,-42) (-15,2) (32,8) (-26,21) (39,-42) (-40, -18) (-30,7) (-12,-28) (19,-16) (-16,-38) 有序点: (-2,-42 ) (-15,2) (3

    1热度

    1回答

    以下代码使用mergeSort算法对最多包含1500000个数字的数组进行排序。然而,我不断收到错误的线long temp [] = new long[end - start + 1]; 我不断收到的错误消息是:'initializing': cannot convert from 'long *' to 'long []'和initialization with '{...}' expected

    0热度

    1回答

    我想递归实现合并排序算法,只通过向函数传递矢量值(无左或右索引)。以下代码中的while循环在将要排序的列表作为指针void merge_sort_array(int* v, int l, int r)或引用void merge_sort_ref(vector<int>& v, int l, int r)进行传递时起作用,但我无法理解为什么下面的代码不能正确地对我的列表进行排序。我有一种感觉,这与

    5热度

    1回答

    我试图解决这个问题:“安排在一个给定的链表的元素,使得所有的偶数号码奇数后放置元素各自的顺序应保持相同的” 这是我使用的代码: class Node<T> { T data; Node<T> next; Node(T data) { this.data = data; } } 这是主要的逻辑: static Node<Integer> so

    2热度

    1回答

    在this SO answer中,有一个计算长度为32(最差情况)的数组的并发递归调用数的示例:1 + 2 + 4 + 8 + 16 + 32 = 63。 想象为什么会这样 - 在树的每一层都有2个节点的功率,我们总是进入下一层直到最后一层。 我想知道如何计算这个数字(递归调用的最大数量)为任意长度的数组n?实际上,这个数字似乎是2*n-1,但我不明白为什么。有人可以解释它背后的逻辑吗?