【发布时间】:2020-10-22 20:22:04
【问题描述】:
我是 CS 新手,我的任务非常艰巨。这让我害怕。 在选择排序期间,我们可以获得交换距离——(未排序数组中元素的索引值)和(排序数组中元素的索引值)之间的差异。我们可以像这样找到它(这里是交换距离的总和(我写的代码,计算交换距离的总和是我之前的任务),但是我们可以很容易地获得交换距离的列表):
x = [int(i) for i in input().split()]
def sel_sort(a):
swap_dist_sum = 0
for i in range(len(a)):
min_idx = i
for j in range(i+1, len(a)):
if a[min_idx] > a[j]:
min_idx = j
a[i], a[min_idx] = a[min_idx], a[i]
swap_dist_sum += (min_idx - i) # new index in sorted list - index from unsorted list
return swap_dist_sum # for each element
print(sel_sort(x))
这只是介绍(这个定义很少见)。 我有 (n - 1) 个数字,它们是交换距离;第一次排序迭代中的第一个元素,第二次中的第二个元素,依此类推。我必须在 n 个元素的未排序数组中恢复元素的原始顺序。 我不知道我应该做什么。也许您可以建议我查找/阅读/使用库/小代码提示/等。
Sample Input: # swap distances
1 3 0 1
Sample Output: # original list
4 1 3 5 2
我的第一步应该是这样的:
swap_dist_l = [int(i) for i in input().split()] # list containing all swap distances
sorted_l = [i for i in range(1, len(swap_dist_l) + 2)] # already sorted list
因此,我应该拥有带有原始未排序元素顺序的 unsorted_l。
对不起,如果我的演讲难以理解!
附言我没有发现任何类似/重复的问题。如果我不擅长搜索,请发送链接!
【问题讨论】:
-
不完全是您所需要的,但这个问题(和答案)可能会让您走上正确的道路:interviewbit.com/problems/order-of-people-heights
-
嗯,看起来真的很接近我的任务。谢谢!我会尽快彻底检查。
标签: python arrays algorithm sorting selection-sort