day20.归并排序

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。

归并排序算法的核心正是 Day 19 的合并两个有序数组,补全如下代码:

def merge_sort(lst):
    #
    #
    #
    return lst_sorted

归并排序两阶段:

先分,直到长度1,然后再合:

day20.归并排序_第1张图片

 

#include 
using namespace std;

//merge two subarrays L and M into arr
void merge(int arr[], int p,int q, int r)
{
    //create L<- A[p..q] and M<-A[q+1..r]
    int n1 = q-p+1;
    int n2 = r-q;
    int L[n1],M[n2] ;
    for(int i = 0;i

 

你可能感兴趣的:(c++,算法)