剑指Offer之面试题36:数组中的逆序对
来源:互联网 发布:erp金蝶软件 编辑:程序博客网 时间:2024/06/06 09:35
所有代码均通过G++编译器测试,仅为练手纪录。
//面试题36:数组中的逆序对
//题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。
// 输入一个数组,求出这个数组中的逆序对的总数。
//面试题36:数组中的逆序对//题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。// 输入一个数组,求出这个数组中的逆序对的总数。int CountInversePairImpl(int *pNum,int *pTemp,int nBeg,int nEnd){ if(nBeg == nEnd) { pTemp[nBeg] = pNum[nBeg]; return 0; } int nMid = nBeg + (nEnd - nBeg)/2; int nLeftCount = CountInversePairImpl(pTemp, pNum, nBeg, nMid); int nRightCount = CountInversePairImpl(pTemp, pNum, nMid+1, nEnd); int nPos = nEnd; int nEndLeft = nMid; int nEndRight = nEnd; int nCurCount = 0; while (nEndLeft >= nBeg && nEndRight >= nMid+1) { if (pNum[nEndLeft] > pNum[nEndRight]) { pTemp[nPos--] = pNum[nEndLeft--]; nCurCount += nEndRight - nMid; } else { pTemp[nPos--] = pNum[nEndRight--]; } } while (nEndLeft >= nBeg) { pTemp[nPos--] = pNum[nEndLeft--]; } while (nEndRight >= nMid+1) { pTemp[nPos--] = pNum[nEndRight--]; } return (nLeftCount + nRightCount + nCurCount);}int CountInversePair(int *pNum,int nSize){ if(NULL == pNum || nSize <= 0) { return 0; } int *temp = new int[nSize]; if(NULL == temp) { return 0; } memcpy(temp,pNum,nSize); int nCount = CountInversePairImpl(pNum,temp,0,nSize-1); delete[] temp; return nCount;}void TestCountInversePair(){ int arrNum[] = {7,5,6,4}; int nNumSize = sizeof(arrNum)/sizeof(int); LogInfo("CountInversePair : %d",CountInversePair(arrNum,nNumSize));}
ZhaiPillary
2017-01-07
0 0
- 剑指offer之面试题36数组中的逆序对
- 剑指Offer之面试题36:数组中的逆序对
- 剑指offer面试题36:数组中的逆序对
- [剑指offer][面试题36]数组中的逆序对
- 【剑指offer】面试题36:数组中的逆序对
- 剑指Offer:面试题36 数组中的逆序对
- 剑指offer 面试题36:数组中的逆序对
- 剑指offer 面试题36—数组中的逆序对
- 【剑指Offer学习】【面试题36:数组中的逆序对】
- 剑指offer-面试题36:数组中的逆序对
- 剑指offer面试题36-数组中的逆序对
- 剑指offer面试题36:数组中的逆序对
- 剑指Offer----面试题36:数组中的逆序对
- 剑指Offer面试题36:数组中的逆序对
- 剑指offer--面试题36:数组中的逆序对
- 剑指Offer---面试题36:数组中的逆序对
- 【剑指offer】面试题36-数组中的逆序对
- 剑指offer-面试题36-数组中的逆序对
- 大型互联网应用如何进行流量削峰,应对瞬间请求?
- WebService之nginx+(php-fpm)结构模型剖析及优化
- 【JVM实用参数】(四)内存调优
- CSS3--3D转换
- POJ-2187 Beauty Contest,旋转卡壳求解平面最远点对!
- 剑指Offer之面试题36:数组中的逆序对
- iOS 在 xib 文件中使用 UIScrollView
- C++11 thread
- 多表连接分页问题
- 深度学习Caffe实战笔记(11)一句话理解caffe的数据结构
- 【JVM实用参数】(五)新生代垃圾回收
- [AHK]从注册表获取特殊路径
- 【JVM实用参数】(六) 吞吐量收集器
- 剑指Offer之面试题37:两个链表的第一个公共结点