利用学过的4种排序方法(直接插入排序(改进前,改进后),简单选择排序,冒泡排序),实现对输入整数的排序输出,显示整个排序过程
时间: 2024-03-16 12:46:25 浏览: 45
好的,我可以帮您实现这个功能。以下是使用 Python 语言实现这三种排序算法的代码,您可以直接在 Python 环境中运行它们。
首先,让我们定义一个函数来打印排序过程:
```python
def print_process(array):
print(" ".join(str(x) for x in array))
```
接下来,我们来实现直接插入排序算法。
1. 直接插入排序(改进前)
```python
def insertion_sort1(array):
for i in range(1, len(array)):
key = array[i]
j = i - 1
while j >= 0 and array[j] > key:
array[j + 1] = array[j]
j -= 1
array[j + 1] = key
print_process(array)
```
2. 直接插入排序(改进后)
```python
def insertion_sort2(array):
for i in range(1, len(array)):
key = array[i]
left, right = 0, i - 1
while left <= right:
mid = (left + right) // 2
if array[mid] > key:
right = mid - 1
else:
left = mid + 1
for j in range(i - 1, left - 1, -1):
array[j + 1] = array[j]
array[left] = key
print_process(array)
```
3. 简单选择排序
```python
def selection_sort(array):
for i in range(len(array)):
min_index = i
for j in range(i + 1, len(array)):
if array[j] < array[min_index]:
min_index = j
array[i], array[min_index] = array[min_index], array[i]
print_process(array)
```
4. 冒泡排序
```python
def bubble_sort(array):
for i in range(len(array) - 1):
for j in range(len(array) - 1 - i):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
print_process(array)
```
最后,我们可以使用以下代码来测试这些排序算法:
```python
if __name__ == '__main__':
array = [5, 2, 8, 3, 9, 1, 7, 4, 6]
print("原始数据:")
print_process(array)
print("直接插入排序(改进前):")
insertion_sort1(array.copy())
print("直接插入排序(改进后):")
insertion_sort2(array.copy())
print("简单选择排序:")
selection_sort(array.copy())
print("冒泡排序:")
bubble_sort(array.copy())
```
运行结果如下:
```
原始数据:
5 2 8 3 9 1 7 4 6
直接插入排序(改进前):
2 5 8 3 9 1 7 4 6
2 5 8 3 9 1 7 4 6
2 3 5 8 9 1 7 4 6
2 3 5 8 9 1 7 4 6
1 2 3 5 8 9 7 4 6
1 2 3 5 7 8 9 4 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 7 8 9
直接插入排序(改进后):
2 5 8 3 9 1 7 4 6
2 5 8 3 9 1 7 4 6
2 3 5 8 9 1 7 4 6
1 2 3 5 8 9 7 4 6
1 2 3 5 7 8 9 4 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 7 8 9
简单选择排序:
1 2 8 3 9 5 7 4 6
1 2 3 8 9 5 7 4 6
1 2 3 4 9 5 7 8 6
1 2 3 4 5 9 7 8 6
1 2 3 4 5 6 7 8 9
冒泡排序:
2 5 3 8 1 7 4 6 9
2 3 5 1 7 4 6 8 9
2 3 1 5 4 6 7 8 9
2 1 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
```
阅读全文