# coding=utf-8
import sys
from 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()
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()
algori_Dock_workspace=QWorkspace()
algori_Dock.setWidget(algori_Dock_workspace)
self.clearButton=QPushButton(u'清除输入输出框内容')
self.insert_sort_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.insert_sort_Button,2,0,1,2)
layout2.setRowStretch(3,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) #从输入文本框中获取文本并返回数字列表
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 def showResult(self,pname,runcount,time,data):
tex=pname+u': ||运行时间为:'+str(time)+u' 毫秒 ||运行所用循环执行次数为:'+str(runcount)+u' 次||运行结果为: '+str(data)
self.outTextEdit.setText(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()
self.inTextEdit.clear() app=QApplication(sys.argv)
form=MainWindow()
form.show()
app.exec_()

待添加其他排序算法

【PyQt】插入排序算法的更多相关文章

  1. 排序系列 之 折半插入排序算法 —— Java实现

    基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...

  2. 排序系列 之 直接插入排序算法 —— Java实现

    直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...

  3. 插入排序---希尔插入排序算法(Javascript版)

    取一个小于n的整数作为第一个增量,把序列分组.所有距离为增量的倍数的元素放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量(第二个<第一个)重复上述的分组和排序,直至所取的增量=1, ...

  4. 插入排序---直接插入排序算法(Javascript版)

    将n个元素的数列分为已有序和无序两个部分. 数列:{a1,a2,a3,a4,…,an} 将该数列的第一元素视为有序数列,后面都视为无序数列: {{a1},{a2,a3,a4,…,an}} 将无序数列中 ...

  5. 插入排序算法--直接插入算法,折半排序算法,希尔排序算法(C#实现)

    插入排序算法主要分为:直接插入算法,折半排序算法(二分插入算法),希尔排序算法,后两种是直接插入算法的改良.因此直接插入算法是基础,这里先进行直接插入算法的分析与编码. 直接插入算法的排序思想:假设有 ...

  6. PHP实现插入排序算法

    插入排序(Insertion Sort),是一种较稳定.简单直观的排序算法.插入排序的工作原理,是通过构建有序序列,对于未排序的数据,在有序序列中从后向前扫描,找到合适的位置并将其插入.插入排序,在最 ...

  7. 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现

    排序算法列表电梯: 选择排序算法:详见 Selection Sort 插入排序算法(Insertion Sort):非常适用于小数组和部分排序好的数组,是应用比较多的算法.详见本文 插入排序算法的语言 ...

  8. 直接插入排序算法:ArrayList实现和数组实现

    直接插入排序算法思想: 排序区间R[1..n]: 在排序的过程中,整个排序区间被分为两个子区间: 有序区R[ 1 ... i-1 ]和无序区R[ i ... n ]: 共进行n-1趟排序,每趟排序都是 ...

  9. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

    注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...

随机推荐

  1. python的基本知识点

    一.数据类型 1.整数2.浮点数3.字符串4.布尔值:True/False5.空值:None 二.变量 变量名必须是大小写英文.数字和_的组合,且不能以数字开头 三.常量 全部大写的变量名表示常量,p ...

  2. 1000个经常使用的Python库和演示样例代码

    以下是programcreek.com通过分析大量开源码,提取出的最经常使用的python库. 1. sys    (4627) 2. os    (4088)  3. re    (3563)  4 ...

  3. iOS开发-使用storyboard实现UILabel的自适应高度(iOS8)

    好久没有写博客了.以后多写些博客,对自己是一种提升.对大家也是一种帮助 近期特别痴迷storyboard和xib的可视化编程,在写项目的时候遇到个问题就是怎样使UILabel自适应高度,查了好多文章博 ...

  4. 学 Vim 时希望早点知道的建议

    来自wechat 从 2009 年开始,我就一直把 Vim 当做我的主要(唯一)文本编辑器.在过去的这些年,我学到了很多好用的 Vim 技巧,它们令我感觉相见恨晚,因为它们极大地提高了我的文本编辑效率 ...

  5. Hibernate CRUD操作

    版权声明:本文为博主原创文章,如需转载请标注转载地址 博客地址:http://www.cnblogs.com/caoyc/p/5594789.html  对于Hibernate的增删改查,我们还是用一 ...

  6. SQL数据表插入随机数(转)

    declare @T TABLE (id int identity(1,1),[Name] nvarchar(20), Randnum int) insert @T ([Name]) select ' ...

  7. Mysql删除重复数据保留最小的id

    在网上查找删除重复数据保留id最小的数据,方法如下: DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GR ...

  8. &lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第11章 | 文件和素材

    打开文件 open(name[mode[,buffing]) name: 是强制选项,模式和缓冲是可选的 #假设文件不在.会报以下错误: >>> f = open(r'D:\text ...

  9. jqchart 使用的几点小技巧

    官网demo地址:http://www.jqchart.com/jquery/chart 简单示例: [javascript] $('#jqChart').jqChart({ title: 'jqCh ...

  10. Powershell 获取文件版本信息

    获取文件版本信息,通过FileVersionInfo::GetVersioninfo(file) 来获取信息 function Check-DdpstoreFileVersion{ $Ddpstore ...