[日常学习]灵感来自MergeSort的求逆序数...
来源:互联网 发布:淘宝宝贝怎么编辑尺寸 编辑:程序博客网 时间:2024/06/10 23:56
#!/usr/bin/pythondef countsplit(l,r) :l = sorted(l)r = sorted(r)i = 0j = 0c = 0while(i < len(l) and j < len(r)) :if(l[i] <= r[j]) :i+=1else :c+=len(l)-ij+=1return cdef count(array) :if len(array) == 1 :return 0l = array[0:len(array)/2]r = array[len(array)/2:]lc = count(l)rc = count(r)s = countsplit(l,r)return s+lc+rcs = raw_input()a = [int(x) for x in s.split(' ')]print count(a)
依然有些不懂的地方,不知道为什么是O(nlogn)而不是O(n(logn)^2)...
主要是其中调用了一次sort.
Update:
之前复杂度没分析对是因为代码写错了....
#!/usr/bin/pythondef countsplit(l,r) :i = 0j = 0c = 0s = []while i < len(l) and j < len(r) :if(l[i] <= r[j]) :s.append(l[i])i+=1else :c+=len(l)-is.append(r[j])j+=1while i < len(l) :s.append(l[i])i+=1while j < len(r) :s.append(r[j])j+=1return s,cdef count(array) :if len(array) <= 1 :return array,0l = array[0:len(array)/2]r = array[len(array)/2:]l,lc = count(l)r,rc = count(r)s,sc = countsplit(l,r)return s,sc+lc+rcs = raw_input()a = [int(x) for x in s.split(' ')]a,ac = count(a)print ac
不该sort的...应该是来自merge sort.
- [日常学习]灵感来自MergeSort的求逆序数...
- MergeSort 求逆序数
- 来自SVG的灵感
- 【日常学习】【归并逆序对】codevs1688 求逆序对题解
- 从求逆序对和mergeSort谈起
- 求字符串的逆序数
- 求数组的逆序数
- 求数组的逆序数
- 求逆序数的对数
- 求逆序数的函数
- 求排列的逆序数
- 求排列的逆序数
- 求排列的逆序数
- 求排列的逆序数
- 求排列的逆序数
- 如何求一组数的逆序数
- 用mergesort计算逆序对的算法
- 求逆序数的分治算法
- quagga 中 命令框架
- 如何学习IOS
- 设计模式之装饰模式(Decorator)
- java学习笔记(一)
- C是只能使用标量的语言
- [日常学习]灵感来自MergeSort的求逆序数...
- maven2下pom.xml的json-lib的配置
- myeclipse使用本地jdk
- POJ-3228-Gold Transportation
- HDU 1213 How Many Tables
- or1200下Raw-OS学习(仿真环境篇)
- OpenVPN中的几个和连接相关的Timer解析
- 数据结构练习题---先序遍历二叉树
- html5 拖放操作集锦