python - Python插入/选择排序二维数组
问题描述
大家好,我正在开展一个项目,该项目将计算每种排序方法对二维数字数组进行排序的速度。但是我似乎找不到任何可用于对二维数组进行排序的方法。我的选择排序如下:
def selection(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
我的插入代码如下所示:
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
我创建二维数组的方式是:
arrayInput = int(input("please input the number of arrays: \n"))
amountInput = int(input("please enter how many numbers per array: \n"))
arr = np.empty((arrayInput, amountInput))
x = arr
y = x
for i in range(arrayInput):
for j in range(amountInput):
arr[i][j] = random.randint(0,100)
我想知道如何将我的选择和插入排序函数转换为能够对二维数组进行排序。所以如果我的输入是数组 =
input = [
[2,4,3,1,5],
[3,4,5,2,3]
]
我希望函数通过插入和选择对数组进行排序以输出
expected_output = [
[1,2,3,4,5],
[2,3,3,4,5]
]
抱歉,如果我有一些不正确的术语。
解决方案
由于您已经具有对数组进行排序的函数,因此我将编写一个 sort2d 函数,该函数对给定其中一个函数的每一行进行排序:
def sort2d(arr, sort):
for row in range(len(arr)):
sort(arr[row])
selection2d = lambda arr: sort2d(arr, selection)
insertionSort2d = lambda arr: sort2d(arr, insertionSort)
arr = [[2,4,3,1,5], [3,4,5,2,3]]
selection2d(arr)
print(arr)
[[1, 2, 3, 4, 5], [2, 3, 3, 4, 5]]
您澄清说您想修改函数本身,因此您可以使用本地函数内联显示的 sort2d 代码:
def selection2d(arr);
def selection(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
for row in range(len(arr)):
selection(arr[row])
如果您不喜欢添加for row in range(len(arr2d)):
到选择中,则将现有引用更改arr
为arr[row]
:
def selection(arr):
for row in range(len(arr)):
for i in range(len(arr[row])):
min_idx = i
for j in range(i+1, len(arr[row])):
if arr[row][min_idx] > arr[row][j]:
min_idx = j
arr[row][i], arr[row][min_idx] = arr[row][min_idx], arr[row][i]
推荐阅读
- android - 禁用 GPS 而不重定向到设备设置屏幕
- php - 仅使用 ajax 请求的徽章实时通知
- c - 来自 C 程序的 Bash 内部命令(Ubuntu v/s MacOS)
- firebase - Circle CI 使用 Firebase Admin SDK 失败
- c++ - 为什么我的 Xcode 项目中存在链接器命令错误
- typescript - 类型“{}”上不存在 TypeScript 属性“推送”
- python-3.x - 当我在 pycharm 中运行我的代码时,它工作正常,但是当我尝试从服务器运行相同的代码时,我得到了错误
- android - 从字符串解析 JSON 对象
- django-forms - 如何从 Django 表单中获取图像值?
- javascript - Vuex Mutation 无法使用 localstorage 更新状态