提交 9fe449aa 编写于 作者: W wizardforcel

2020-07-06 23:18:50

上级 7b506386
......@@ -27,7 +27,7 @@ Merge Sort example
在征服步骤中,我们尝试对两个子数组`A[p..q]``A[q + 1..r]`进行排序 。 如果尚未达到基本情况,则再次划分这两个子数组,然后尝试对它们进行排序。
**合并**
当征服步骤到达基本步骤时,我们得到`A[p..r]`数组的两个排序的子数组`A[p..q]``A[q + 1..r]`,我们通过从两个排序的子数组`A[p]`创建一个排序的数组`A [p..r]`来组合结果`A[p..q]``A [q + 1..r]`
当征服步骤到达基本步骤时,我们得到`A[p..r]`数组的两个排序的子数组`A[p..q]``A[q + 1..r]`,我们通过从两个排序的子数组`A[p]`创建一个排序的数组`A[p..r]`来组合结果`A[p..q]``A[q + 1..r]`
* * *
......@@ -89,17 +89,17 @@ Merge step
这就是为什么我们只需要数组,第一个位置,第一个子数组的最后一个索引(我们可以计算第二个子数组的第一个索引)和第二个子数组的最后一个索引的原因。
我们的任务是合并两个子数组`A [p..q]``A [q + 1..r]`,以创建排序数组`A [p..r ]`。 因此,函数的输入为`A``p``q``r`
我们的任务是合并两个子数组`A[p..q]``A[q + 1..r]`,以创建排序数组`A[p..r]`。 因此,函数的输入为`A``p``q``r`
合并功能的工作方式如下:
1. 创建子数组`L ← A[p..q]``M←A [q + 1..r]`的副本。
1. 创建子数组`L ← A[p..q]``M←A[q + 1..r]`的副本。
2. 创建三个指针`i``j``k`
1. `i`维持`L`的当前索引,从 1 开始
2. `j`维持`M`的当前索引,从 1 开始
3. `k`维持`A [p..q]`的当前索引,从`p`开始。
3. 直到我们到达`L``M`的末尾,再从`L``M`中选择较大的元素,然后将它们放在`A [p..q]`的正确位置
4. 当我们用尽`L``M`中的元素时,请拾取其余元素,然后放入`A [p..q]`
3. `k`维持`A[p..q]`的当前索引,从`p`开始。
3. 直到我们到达`L``M`的末尾,再从`L``M`中选择较大的元素,然后将它们放在`A[p..q]`的正确位置
4. 当我们用尽`L``M`中的元素时,请拾取其余元素,然后放入`A[p..q]`
在代码中,这看起来像:
......@@ -271,7 +271,7 @@ Copy remaining elements of second array to main subarray
如果`M`的大小大于`L`,则需要此步骤。
在合并功能的末尾,对子数组`A [p..r]`进行排序。
在合并功能的末尾,对子数组`A[p..r]`进行排序。
* * *
......
......@@ -99,7 +99,7 @@ Max Heap and Min Heap
```
heapify(array)
Root = array[0]
Largest = largest( array[0] , array [2*0 + 1]. array[2*0+2])
Largest = largest( array[0] , array[2*0 + 1]. array[2*0+2])
if(Root != Largest)
Swap(Root, Largest)
```
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册