博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【PyQt】算法-插入、递归、冒泡
阅读量:7081 次
发布时间:2019-06-28

本文共 4380 字,大约阅读时间需要 14 分钟。

# coding=utf-8import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *class MainWindow(QMainWindow):     def __init__(self,parent=None):          super(MainWindow,self).__init__(parent)          self.setWindowTitle(u'算法实现')          self.setWindowIcon(QIcon('image/5.png'))                    #设置输入数据窗口&数据输出窗口          in_out_putDock=QDockWidget(u'输入输出')          in_out_putDock_workspace=QWorkspace()          in_out_putDock.setWidget(in_out_putDock_workspace)          label_in=QLabel(u'输入数据窗口,数据以“,”分隔')          label_out=QLabel(u'输出数据窗口')          self.inTextEdit=QTextEdit()          self.outTextEdit=QTextEdit()          layout=QGridLayout()          layout.addWidget(label_in,0,0)          layout.addWidget(self.inTextEdit,1,0,1,4)          layout.addWidget(label_out,2,0)          layout.addWidget(self.outTextEdit,3,0,1,4)          in_out_putDock_workspace.setLayout(layout)          self.addDockWidget(Qt.LeftDockWidgetArea,in_out_putDock)                    #设置算法(algorithm)按钮及运行时间显示控件          algori_Dock=QDockWidget(u'各类算法')          algori_Dock_workspace=QWorkspace()          algori_Dock.setWidget(algori_Dock_workspace)          self.clearButton=QPushButton(u'清除输出框内容')          self.clear_in_Button=QPushButton(u'清除输入框内容')          self.insert_sort_Button=QPushButton(u'插入升序算法')          self.merge_Button=QPushButton(u'分治递归升序算法')          self.bubble_Button=QPushButton(u'冒泡升序算法')          time_label=QLabel(u'算法运行时间: ')          self.runTime_label=QLabel()          self.runTime_label.setFrameShape(QFrame.Box)          layout2=QGridLayout()          layout2.addWidget(time_label,0,0)          layout2.addWidget(self.runTime_label,0,1)          layout2.addWidget(self.clearButton,1,0,1,1)          layout2.addWidget(self.clear_in_Button,1,1,1,1)                    layout2.addWidget(self.insert_sort_Button,2,0,1,1)          layout2.addWidget(self.merge_Button,2,1,1,1)          layout2.addWidget(self.bubble_Button,3,0,1,1)          layout2.setRowStretch(4,1)          algori_Dock_workspace.setLayout(layout2)          self.addDockWidget(Qt.RightDockWidgetArea,algori_Dock)                    #将按钮与动作相连          self.connect(self.insert_sort_Button,SIGNAL('clicked()'),self.insertSortUp)          self.connect(self.clearButton,SIGNAL('clicked()'),self.clearInOutEdit)          self.connect(self.merge_Button,SIGNAL('clicked()'),self.MergeSortUp)          self.connect(self.clear_in_Button,SIGNAL('clicked()'),self.clearInEdit)          self.connect(self.bubble_Button,SIGNAL('clicked()'),self.bubbleSortUp)               #从输入文本框中获取文本并返回数字列表          def getData(self):          textData=self.inTextEdit.document()          textData_str=textData.toPlainText()          data=str(textData_str).split(',')          data_f=[]          for i in range(len(data)):               data_f.append(float(data[i]))          return data_f               def showResult(self,pname,runcount,time,data):          tex=pname+u':  ||运行时间为:'+str(time)+u'  毫秒 ||运行所用循环执行次数为:'+str(runcount)+u'  次||运行结果为:  '+str(data)          self.outTextEdit.append(tex)          self.runTime_label.setText(str(time)+u'毫秒')                         def insertSortUp(self):          run_time=QTime()          run_time.start()          data=self.getData()          runcount=0          #插入排序算法          j=1          for j in range(len(data)):               key=data[j]               i=j-1               while i>=0 and data[i]>key:                    data[i+1]=data[i]                    i-=1                    runcount+=1               data[i+1]=key                         spend_time=run_time.elapsed()          self.showResult(u'插入升序算法',runcount,spend_time,data)               def clearInOutEdit(self):          self.outTextEdit.clear()     def clearInEdit(self):          self.inTextEdit.clear()               #分治递归合并两个数组          def Merge(self,data,p,q,r,runcount):          n1=q-p+1          n2=r-q          L=[]          R=[]          for i in range(n1):               L.append(data[p+i-1])               runcount+=1          for j in range(n2):               R.append(data[q+j])               runcount+=1          L.append(1000000000)          R.append(1000000000)          a=0          b=0          k=p          #self.outTextEdit.append(str(L)+'+'+str(R))          while  k<=r:               if L[a]
i: if data[j]
插入算法的数量级为n的平方 递归数量级为logn 冒泡排序的数量级为n的平方

转载地址:http://lzlml.baihongyu.com/

你可能感兴趣的文章
面向对象二次整理(基础,属性引用,方法引用.绑定方法)
查看>>
[C++参考]私有成员变量的理解
查看>>
SimpleDateFormat、Date和String互转
查看>>
简易翻译工具
查看>>
把tree结构数据转换easyui的columns
查看>>
Hello cnblogs
查看>>
C# 判断点是否在多边形内
查看>>
[WC2019] 数树
查看>>
Altium Ddesigner 栅格 含义
查看>>
hdu折线分割平面 递推
查看>>
学习该有的思维方式
查看>>
RColorBrewer的使用
查看>>
http协议基础(一)
查看>>
好看的电影-电视剧
查看>>
Linux:查看磁盘空间占用情况
查看>>
redis发布订阅
查看>>
dubbo+zookeeper
查看>>
ZOJ 3642 Just Another Information Sharing Problem【二分图多重匹配】
查看>>
Ansible基础
查看>>
3D打印材料的发展现状(1)
查看>>