逆序数
2015-08-11 16:32
225 查看
定义:对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个不同的自然数,可规定由小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有一个逆序, 一个排列中所有逆序的总数叫做这个排列的逆序数。(同济线性代数第五版)
一、逐个数
二、递归
三、树状数组
一、逐个数
int inverse_num(int *nums, int size) { int invnum = 0; int i,j; for (i=1; i<size; ++i) { for (j=0; j<i; ++j) { if(nums[j] > nums[i]) ++invnum; } } return invnum; }
二、递归
int count = 0; int merger_sort(int *ar, int first, int mid, int end) { int temp[MAX_TEMP] = {0}; int i, j, k; for (i=first, j=mid + 1, k=0; i<=mid && j<=end; ) { if (ar[i] <= ar[j]) { temp[k++] = ar[i++]; } else { temp[k++] = ar[j++]; count += mid - i + 1; } } for (;i<=mid; ) temp[k++] = ar[i++]; for (;j<=end;) temp[k++] = ar[j++]; for (j=0; j<k; ) ar[first++] = temp[j++]; } void merger(int *ar, int first, int end) { if (first == end) return; else { int mid = (first + end)/ 2; merger(ar, first, mid); merger(ar, mid + 1, end); merger_sort(ar, first, mid, end); } }
三、树状数组
相关文章推荐
- wget -r -nc -np "http://www.zhihu.com/"
- deep learning - h2o R samples
- 底层const能区分拷贝,固然也能区分函数重载
- iOS研发之静态库的封装
- startActivityForResult中程序关闭的解决方法
- 24-IO流-59-IO流(RandomAccessFile-写入)
- vs2010中重新只编译修改的文件
- 关于Linux的历史
- wget -r -nc -np "http://www.zhihu.com/"
- APM的前世今生:服务经验加速国内APM未来发展
- PS几种抠图的方法
- 火星菌
- C语言大数乘法
- CF 568A(Primes or Palindromes?-暴力判断)
- xcode,在webView中引入本地html,image,js,css文件的方法
- Base64编码+两串异或操作
- C# ListView用法详解
- Easy UI的树形菜单的异步加载
- 24-IO流-57-IO流(序列化接口-Serializable)
- 24-IO流-58-IO流(关键字-transient)