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 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥15 服务端控制goose报文控制块的发布问题