[剑指offer]数组中的逆序对
2016-04-07 16:02
513 查看
/* 36:> 数组中的逆序对 (7,4)前比后大 叫逆序对 */ int InversePairsCore(int data[], int copy[], int start, int end); int InversePairs(int data[],int len) { if (data == NULL || len < 0) return 0; int* copy = new int[len]; for (int i = 0; i < len; ++i) copy[i] = data[i]; int count = InversePairsCore(data, copy, 0, len - 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); int i = start + length; 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; } //void test() //{ // int ar[4] = {7,5,6,4}; // cout << InversePairs(ar, 4) << endl; //}
相关文章推荐
- [剑指offer]丑数
- 【JQuery UI】面板折叠插件——accordion
- [剑指offer]把数组排列成最小的数
- [剑指offer]连续子数组最大和
- 通过修改manifest文件来解决Vista/Win7/Win8/win10下应用程序兼容性问题
- js类式继承与原型式继承详解
- 工作笔记之复杂字符串的json解析,使用gson
- [剑指offer:30]最小的k个数
- js打印 PrintArea-master
- 【JQuery UI】拖曳排序插件——sortable
- HTML5 浏览器支持(怎么样让低版本浏览器支持html5?)
- 通过路由管理视图间切换 - AngularJS路由解析
- maven项目中编辑的js文件后保存报错
- js,ajax验证编号是否存在,input只能输入数字,form表单验证
- javascript原型继承工作原理和实例详解
- 剑指Offer——把字符串前面的n个字符转移到字符串的尾部
- 单独jsp页面 数字格式化
- javascript 之this关键之及scope
- 前端工程化:云构建
- HTML 模板继承