zoukankan      html  css  js  c++  java
  • 36.数组中的逆序对



    int InversePairs(int* data, int length)
    {
    if (data == NULL || length < 0)
    return 0;
    int *copy = new int[length];
    for (int i = 0; i < length; ++i)
    copy[i] = data[i];
    int count = InversePairsCore(data, copy, 0, length - 1);
    delete[] copy;
    return count;
    }
    int InversePairsCore(int* data, int* copy, int start, int end)
    {
    if (start == end)
    {
    copy[start] = data[start];
    return 0;
    }
    int length = (end - start) / 2;
    int left = InversePairsCore(copy, data, start, start + length);
    int right = InversePairsCore(copy, data, start + length + 1, end);
    //i初始化为前半段最后一个数字的下标
    int i = start + length;
    //j初始化为后半段最后一个数字的下标
    int j = end;
    int indexCopy = end;
    int count = 0;
    while (i >= start&& j >= start + length + 1)
    {
    if (data[i] > data[j])
    {
    copy[indexCopy--] = data[i--];
    count += j - start - length;
    }
    else
    {
    copy[indexCopy--] = data[j--];
    }
    }
    for (; i >= start; --i)
    copy[indexCopy--] = data[i];
    for (; j >= start + length + 1; --j)
    copy[indexCopy--] = data[j];
    return left + right + count;
    }




  • 相关阅读:
    vue_路由
    vue_列表动画
    vue生命周期详细
    Vue_过渡和动画
    vue_品牌列表案例(添加删除搜索过滤)
    vue_简单的添加删除
    v-if v-show
    vue_简单的添加数据
    JSON.parse()和JSON.stringify()
    vue_计算器
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6905627.html
Copyright © 2011-2022 走看看