我能够自己输入一组数据,并且能对数据进行插入、删除和显示操作,还能分别用二分法插入排序、直接选择排序、直接插入排序算法对这些数据进行排序,用一个程序来表示这三种排序算法的进行
时间: 2024-02-13 07:59:39 浏览: 24
可以的,这是一个经典的数据结构和算法问题。您可以使用 Python 或其他编程语言来实现这个程序。
首先,您需要实现一个能够进行插入、删除和显示操作的数据结构,例如数组或链表。在 Python 中,您可以使用列表来实现这个数据结构。下面是一个示例代码:
```python
data = []
def insert(value):
data.append(value)
def delete(index):
del data[index]
def display():
print(data)
```
接下来,您可以实现三种排序算法:二分法插入排序、直接选择排序和直接插入排序。下面是这三种算法的 Python 实现:
```python
# 二分法插入排序
def binary_insertion_sort(data):
for i in range(1, len(data)):
value = data[i]
left = 0
right = i - 1
while left <= right:
mid = (left + right) // 2
if data[mid] > value:
right = mid - 1
else:
left = mid + 1
for j in range(i - 1, left - 1, -1):
data[j + 1] = data[j]
data[left] = value
# 直接选择排序
def selection_sort(data):
for i in range(len(data)):
min_index = i
for j in range(i + 1, len(data)):
if data[j] < data[min_index]:
min_index = j
data[i], data[min_index] = data[min_index], data[i]
# 直接插入排序
def insertion_sort(data):
for i in range(1, len(data)):
value = data[i]
j = i - 1
while j >= 0 and data[j] > value:
data[j + 1] = data[j]
j -= 1
data[j + 1] = value
```
最后,您可以编写一个测试程序,用于测试这三种排序算法的效率和正确性。下面是一个示例代码:
```python
import random
import time
# 生成随机数据
data = [random.randint(1, 100) for _ in range(10)]
# 显示原始数据
print("Original data:")
display()
# 二分法插入排序
print("Binary insertion sort:")
start_time = time.time()
binary_insertion_sort(data)
end_time = time.time()
display()
print("Time used: {:.6f}s".format(end_time - start_time))
# 直接选择排序
print("Selection sort:")
start_time = time.time()
selection_sort(data)
end_time = time.time()
display()
print("Time used: {:.6f}s".format(end_time - start_time))
# 直接插入排序
print("Insertion sort:")
start_time = time.time()
insertion_sort(data)
end_time = time.time()
display()
print("Time used: {:.6f}s".format(end_time - start_time)))
```
这个测试程序会生成一个包含 10 个随机数的列表,并使用三种排序算法对其进行排序,并输出排序后的结果和排序时间。您可以根据需要修改测试程序。