zoukankan      html  css  js  c++  java
  • 用python实现,冒泡排序演示

      1 # -*- coding:utf-8 -*-
      2 import time
      3 from Tkinter import *
      4 a=[1,9,5,6,8,1]
      5 
      6 class CanvasDemo():
      7     #n1=70
      8     #n2=n1+40
      9     d1=390
     10     d2=d1-60
     11     weiyi=len(a)-1
     12     def __init__(self):
     13 
     14         n1=70
     15         n2=n1+40
     16         window=Tk()
     17         window.title("冒泡排序演示")
     18         self.canvas=Canvas(window,width=500,height=400,bg='white')##设置画布大小,颜色
     19         self.canvas.pack()
     20         frame=Frame(window)
     21         frame.pack()
     22         ##self.paixu()
     23         self.displayRect()
     24         self.n1=n1+60
     25         self.n2=n2+60
     26         btString=Button(frame,text="执行",command=self.paixu)
     27         btString.grid(row=1,column=6)
     28         window.mainloop()
     29 
     30 
     31     def displayRect(self):##打印表格
     32         self.canvas.create_rectangle(60,30,420,90,tags="rect")##左上右下
     33         self.canvas.create_rectangle(120,30,360,90,tags="rect")
     34         self.canvas.create_rectangle(180,30,300,90,tags="rect")
     35         self.canvas.create_rectangle(240,30,240,90, tags="rect")
     36     def paixu(self):
     37         
     38         for i in range(0,len(a)):
     39             j=len(a)-1##添加交换之前
     40             self.weiyi=len(a)-1
     41             while j>i:
     42                 self.displayString2()
     43                 time.sleep(1)
     44                 #if j>i:
     45                  #   self.canvas.delete("int")
     46                     
     47                 ##self.weiyi=len(a)-1
     48                 self.displayString3()
     49                 time.sleep(1)
     50                 if a[j-1]>a[j]:
     51                     a[j-1],a[j]=a[j],a[j-1]
     52                 #j=j-1
     53                 self.displayString4()
     54                 if j>=i:
     55                     self.canvas.delete("int")
     56                 self.displayString1()##打印交换之后的
     57                 time.sleep(1)
     58                 
     59                 if j>=i:
     60                     self.canvas.delete("int")
     61                 j=j-1
     62             self.displayString1()
     63                 
     64                 
     65         
     66     def displayLine(self):## 设置箭头指向
     67         self.canvas.create_line(self.n2,30,self.n2,10,self.n2+60,10,self.n2+60,30,width=1,arrow="last",tags="line")
     68 
     69     def displayString1(self):## 打印序列
     70         n1=90
     71         ##time.sleep(1)
     72         
     73         for z in range(len(a)):
     74             self.canvas.create_text(n1,60,text="%s"%a[z],font="Times 20 bold ",tags="int")
     75             n1=n1+60
     76         self.canvas.update()
     77         #self.update()
     78         #time.sleep(0.5)
     79 
     80     def displayString2(self):
     81         n2=90
     82         for z in range(len(a)):
     83             if z!=self.weiyi and z!=self.weiyi-1:
     84                 self.canvas.create_text(n2,60,text="%s"%a[z],font="Times 20 bold ",tags="int")
     85             n2=n2+60
     86         self.canvas.update()
     87         self.weiyi=self.weiyi-1
     88     def displayString3(self):
     89         n2=90
     90         for z in range(len(a)):
     91             if z==self.weiyi:
     92                 if a[z]>a[z+1]:
     93                     self.canvas.create_line(n2,30,n2,10,n2+60,10,n2+60,30,width=1,arrow="last",tags="line")
     94                 self.canvas.create_text(n2,60,text="%s"%a[z],font="Times 20 bold ",tags="int1")
     95                 self.canvas.create_text(n2+60,60,text="%s"%a[z+1],font="Times 20 bold",tags="int1")
     96                 for x in range(0,10):
     97                     self.canvas.move("int1",0,20)
     98                     self.canvas.move("int12",0,20)
     99                     self.canvas.update()
    100                     time.sleep(0.1)
    101                     if(x==9):
    102                         self.canvas.delete("int1")
    103             n2=n2+60
    104         self.canvas.update()
    105     def displayString4(self):
    106         n2=90
    107         for z in range(len(a)):
    108             if z==self.weiyi:
    109                 self.canvas.create_text(n2,300,text="%s"%a[z],font="Times 20 bold ",tags="int2")
    110                 self.canvas.create_text(n2+60,300,text="%s"%a[z+1],font="Times 20 bold ",tags="int2")
    111                 for x in range(0,10):
    112                     self.canvas.move("int2",0,-20)
    113                     self.canvas.update()
    114                     time.sleep(0.1)
    115                     if(x==9):
    116                         self.canvas.delete("int2","line")
    117             n2=n2+60
    118 
    119 CanvasDemo()
  • 相关阅读:
    递归
    数组[]
    AngularJs学习总结-了解基本特性(-)
    终于落脚了!
    总结一下面试中的知识点
    bootstrap学习总结-js组件(四)
    spark学习进度3:Scala中变量,常量,数据类型,运算符,表达式,循环,方法,函数的基本使用
    spark学习进度2
    spark学习进度1
    后台得到jsp提交name属性相同的内容
  • 原文地址:https://www.cnblogs.com/duolaAbao/p/6260194.html
Copyright © 2011-2022 走看看