求问Python归并排序求逆序数方法,python逆序,class nx:
求问Python归并排序求逆序数方法,python逆序,class nx:
class nx: count = 0 def __init__(self): self.str_list=[] self.N = int(raw_input().strip()) for _ in xrange(self.N): self.str_list.append(raw_input().strip()) print self.count_inversion(self.str_list) def merge(self, ListA, ListB): self.newlist = [] while ListA and ListB: if ListA[0] > ListB[0]: self.newlist.append(ListB[0]) ListB = ListB[1:] self.count += len(ListA) print str(len(ListA))+'**** ' else: self.newlist.append(ListA[0]) ListA =ListA[1:] if ListA: self.newlist = self.newlist + ListA elif ListB: self.newlist = self.newlist + ListB return self.newlist def merge_sort(self, A): if len(A) == 1: return A else: self.middle = len(A)/2 print '**************' print 'Ais '+str(A) print 'middle is '+ str(self.middle) print 'zuo' print A[:self.middle] print 'you' print A[self.middle:] self.sa1 = self.merge_sort(A[:self.middle]) self.sa2 = self.merge_sort(A[self.middle:]) return self.merge(self.sa1, self.sa2) def count_inversion(self, sequence): self.merge_sort(sequence) return self.count if __name__ == '__main__': nx()
结果:
Ais ['2', '4', '3', '1']
middle is 2
zuo
['2', '4']
you
['3', '1']
Ais ['2', '4']
middle is 1
zuo
['2']
you
['4']
****************为什么会这样 Ais ['4', '3', '1'] middle is 1 zuo ['4'] you ['3', '1'] ****************
Ais ['3', '1']
middle is 1
zuo
['3']
you
['1']
我知道了,python局部变量问题
class nx:
def init(self):
self.count = 0
self.str_list=[]
self.N = int(raw_input().strip())
for _ in xrange(self.N):
self.str_list.append(raw_input().strip())
print self.count_inversion(self.str_list)
def merge(self, ListA, ListB): newlist = [] while ListA and ListB: if int(ListA[0]) > int(ListB[0]): self.count += len(ListA) newlist.append(ListB.pop(0)) else: newlist.append(ListA.pop(0)) return newlist + ListA + ListB def merge_sort(self, A): if len(A) == 1: return A else: middle = len(A)/2 return self.merge(self.merge_sort(A[:middle]), self.merge_sort(A[middle:])) def count_inversion(self, sequence): self.merge_sort(sequence) return self.count
if name == 'main':
nx()
就是个边界条件的问题,不等号加上或者去掉等号
编橙之家文章,
相关内容
- python django在nginx里模板输出html标签出错,djangonginx,就是
- Python与php在数据处理方面差异有哪些?,python数据处理
- Django项目删除最正确方法是什么,django项目方法,版本信
- 谁能讲解关于Python yield用途和作用,pythonyield,搜索了下
- Python xlwings插件报错跪求大神帮助,pythonxlwings,就这样了
- python什么方法能把../这样的网址转换成真实地址呢?,
- https类型网页python scrapy能爬取吗,pythonscrapy,想获得ht
- Python2.7安装MySQLdb报failed with exit status错误,python2.7mys
- python折算汇率计算的小问题,python折算汇率,碰到了一个
- Python方法要加载1G数据到数组内如何操作,python数组,内
评论关闭