sjnnkk 2023-03-01 11:12 采纳率: 100%

# Python数据结构

(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日

#### 悬赏问题

• ¥66 定制开发肯德基自动化网站下单软件
• ¥20 vscode虚拟环境依赖包未安装
• ¥15 odoo17关于owl开发js代码问题
• ¥15 光纤中多普勒频移公式的推导
• ¥15 怎么制作一个人脸识别门禁系统
• ¥20 大华dss监控平台网络关闭登不进去
• ¥15 请使用蚁群算法解决下列问题，并给出我完整的代码
• ¥20 关于php录入完成后，批量更新数据库
• ¥15 请教往复密封润滑问题
• ¥15 cocos creator发布ios包