sjnnkk 2023-03-01 11:12 采纳率: 100%
浏览 57
已结题

Python数据结构

使用python编程语言实现Tkinter界面

该界面要有以下功能
(1)从键盘上输入n个长度为m的整数,程序可以输出这些整数的四种排序方式:快速排序,直接选择排序,冒泡排序,归并排序,并在界面显示每种排序的升序和降序以及排序的时间复杂度和空间复杂度;
(2)程序能对所输入的数字进行判断,如果不是所要求的长度,弹出提醒消息框;
(3)输出结果以逗号隔开。
(4)只能使用数据结构的知识实现,不能使用数据库

  • 写回答

1条回答 默认 最新

  • Web Security Loop 2023-03-01 13:26
    关注
    • 如果有帮到你,请采纳一下~
    
    import time
    import tkinter as tk
    from tkinter import messagebox
    
    
    class SortingAlgorithms:
        def __init__(self):
            pass
    
        def bubble_sort(self, arr):
            start_time = time.time()
            n = len(arr)
            for i in range(n):
                for j in range(0, n-i-1):
                    if arr[j] > arr[j+1]:
                        arr[j], arr[j+1] = arr[j+1], arr[j]
            end_time = time.time()
            time_complexity = end_time - start_time
            space_complexity = 1
            return arr, time_complexity, space_complexity
    
        def selection_sort(self, arr):
            start_time = time.time()
            n = len(arr)
            for i in range(n):
                min_idx = i
                for j in range(i+1, n):
                    if arr[min_idx] > arr[j]:
                        min_idx = j
                arr[i], arr[min_idx] = arr[min_idx], arr[i]
            end_time = time.time()
            time_complexity = end_time - start_time
            space_complexity = 1
            return arr, time_complexity, space_complexity
    
        def quick_sort(self, arr):
            start_time = time.time()
    
            def partition(arr, low, high):
                i = low - 1
                pivot = arr[high]
                for j in range(low, high):
                    if arr[j] <= pivot:
                        i = i + 1
                        arr[i], arr[j] = arr[j], arr[i]
                arr[i+1], arr[high] = arr[high], arr[i+1]
                return i+1
    
            def quick_sort_helper(arr, low, high):
                if low < high:
                    pi = partition(arr, low, high)
                    quick_sort_helper(arr, low, pi-1)
                    quick_sort_helper(arr, pi+1, high)
    
            quick_sort_helper(arr, 0, len(arr)-1)
            end_time = time.time()
            time_complexity = end_time - start_time
            space_complexity = len(arr)
            return arr, time_complexity, space_complexity
    
        def merge_sort(self, arr):
            start_time = time.time()
    
            def merge(arr, l, m, r):
                n1 = m - l + 1
                n2 = r - m
                L = [0] * n1
                R = [0] * n2
                for i in range(n1):
                    L[i] = arr[l + i]
                for j in range(n2):
                    R[j] = arr[m + 1 + j]
                i = 0
                j = 0
                k = l
                while i < n1 and j < n2:
                    if L[i] <= R[j]:
                        arr[k] = L[i]
                        i += 1
                    else:
                        arr[k] = R[j]
                        j += 1
                    k += 1
                while i < n1:
                    arr[k] = L[i]
                    i += 1
                    k += 1
                while j < n2:
                    arr[k] = R[j]
                    j += 1
                    k += 1
    
            def merge_sort_helper(arr, l, r):
                if l < r:
                    m = (l+(r-1)) // 2
                    merge_sort_helper(arr, l, m)
                    merge_sort_helper(arr, m+1, r)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题