归并排序

归并排序
//归并merge,需要一个辅助数组

void merge(vector<int>&arr, int start, int mid, int end, vector<int>&temp)
{
    int istart = start;
    int iend = mid;
    int jstart = mid + 1;
    int jend = end;
    while (istart <=iend&& jstart<=jend)
    {
        if (arr[istart] > arr[jstart])
        {
            temp.push_back(arr[jstart]);
            jstart++;
        }
        else
        {
            temp.push_back(arr[istart]);
            istart++;
        }
    }
    while (istart <= iend)
    {
            temp.push_back(arr[istart]);
            istart++;
    }
    while (jstart <= jend)
    {
        temp.push_back(arr[jstart]);
        jstart++;
    }
    for (int i = 0; i < temp.size(); i++)
    {
        arr[start + i] = temp[i];
    }
    temp.clear();
}
void mergeSort(vector<int>&arr, int start, int end, vector<int>&temp)
{
    if (start < end)
    {
        int mid = (start + end) / 2;
        mergeSort(arr, start, mid, temp);
        mergeSort(arr, mid + 1, end, temp);
        merge(arr, start, mid, end, temp);
    }
}
全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
06-18 13:28
已编辑
门头沟学院 Web前端
爱睡觉的冰箱哥:《给予你300的工资》,阴的没边了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务