.输入一个3×3的二维整数矩阵,分别采用冒泡法、交换法编程实现对这9个数字从小到大进行排序,并输出。 例如,输入为: ,则输出为: 。
时间: 2023-09-21 19:06:33 浏览: 89
C语言第四次作业.pdf
### 回答1:
以下是冒泡排序和交换排序的Python代码实现。
```python
# 冒泡排序
def bubble_sort(matrix):
n = len(matrix)
for i in range(n-1):
for j in range(n-i-1):
if matrix[j] > matrix[j+1]:
matrix[j], matrix[j+1] = matrix[j+1], matrix[j]
return matrix
# 交换排序
def exchange_sort(matrix):
n = len(matrix)
for i in range(n-1):
for j in range(i+1, n):
if matrix[i] > matrix[j]:
matrix[i], matrix[j] = matrix[j], matrix[i]
return matrix
# 测试
matrix = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
print("原始矩阵:", matrix)
for i in range(len(matrix)):
matrix[i] = bubble_sort(matrix[i])
print("冒泡排序后的矩阵:", matrix)
for i in range(len(matrix)):
matrix[i] = exchange_sort(matrix[i])
print("交换排序后的矩阵:", matrix)
```
输出:
```
原始矩阵: [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
冒泡排序后的矩阵: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
交换排序后的矩阵: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
```
可以看到,冒泡排序和交换排序都能够正确地对矩阵进行排序。
### 回答2:
冒泡法排序是一种简单的排序算法,它通过依次比较相邻的两个元素,将较大的元素往后移动,每一轮比较都将会确定一个元素的最终位置。下面是使用冒泡法排序的代码:
```python
# 输入一个3×3的二维整数矩阵
matrix = [[5, 9, 2],
[4, 7, 1],
[6, 3, 8]]
# 展开矩阵为一维列表
numbers = [num for row in matrix for num in row]
# 冒泡法排序
for i in range(len(numbers)-1):
for j in range(len(numbers)-1-i):
if numbers[j] > numbers[j+1]:
numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
# 输出排序结果
for i in range(len(matrix)):
for j in range(len(matrix[i])):
matrix[i][j] = numbers[i*len(matrix[i])+j]
print(matrix[i][j], end=' ')
print()
```
运行上述代码输出结果为:
```
1 2 3
4 5 6
7 8 9
```
交换法排序是另一种常见的排序算法,它通过不断地比较并交换两个元素的位置,将较小的元素往前移动,每一轮比较都将会确定一个元素的最终位置。下面是使用交换法排序的代码:
```python
# 输入一个3×3的二维整数矩阵
matrix = [[5, 9, 2],
[4, 7, 1],
[6, 3, 8]]
# 展开矩阵为一维列表
numbers = [num for row in matrix for num in row]
# 交换法排序
for i in range(len(numbers)):
for j in range(i+1, len(numbers)):
if numbers[i] > numbers[j]:
numbers[i], numbers[j] = numbers[j], numbers[i]
# 输出排序结果
for i in range(len(matrix)):
for j in range(len(matrix[i])):
matrix[i][j] = numbers[i*len(matrix[i])+j]
print(matrix[i][j], end=' ')
print()
```
运行上述代码输出结果同样为:
```
1 2 3
4 5 6
7 8 9
```
以上两种方法都可以实现对输入的3×3矩阵进行排序,得到从小到大排列的结果。
### 回答3:
冒泡排序法是一种简单的排序算法,基本思想是通过相邻元素的比较和交换来实现排序。首先,将输入的3×3矩阵按照一维数组排列,并构造一个3×3的二维整数矩阵存储结果。
冒泡排序的具体步骤如下:
1. 遍历整个一维数组,从第一个元素开始向后依次比较相邻元素的大小。
2. 如果前一个元素大于后一个元素,则交换它们的位置,使得较大的数往后移动。
3. 继续从第一个元素开始进行相邻元素的比较交换,直到最后一个元素。
4. 重复上述步骤,直到所有的元素都按照从小到大的顺序排列。
交换排序法是另一种常用的排序算法,其基本思想是通过两两比较,找到最小(大)的元素,然后将其交换到最前(后)的位置。类似冒泡排序法,首先将输入的矩阵按照一维数组排列,并构造一个3×3的二维整数矩阵存储结果。
交换排序的具体步骤如下:
1. 遍历整个一维数组,假设当前元素为最小(大)值,记下其下标。
2. 继续遍历后面的元素,如果找到更小(大)的元素,则更新最小(大)值的下标。
3. 遍历完成后,将最小(大)值与第一个位置的元素交换。
4. 重复上述步骤,但不再包括已经排好序的元素。
5. 重复步骤2-4,直到所有的元素都按照从小到大的顺序排列。
最后,将排序后的一维数组根据题目要求转换成3×3的二维整数矩阵,并输出即可。
阅读全文