python找出最小数_Python算法,以找到未排序数组中k最小数的索引?

这篇博客探讨了如何在Python中不使用numpy模块找到未排序数组中k个最小数的索引。作者提出了使用冒泡排序算法,并讨论了如何修改该算法以仅返回k个最小数的索引,而不是完整排序。在编辑部分,作者展示了如何调整冒泡排序以交换索引,并提出了一种方法来避免不必要的内存开销。
摘要由CSDN通过智能技术生成

在python中,有没有算法可以找到未排序数组中k个最小数的索引?我知道如何使用numpy模块来实现这一点,但我不想找那个。我马上想到的一个方向是排序算法。假设我有一个算法,可以在python中使用bubble sort对数组进行排序:def bubbleSort(arr):

n = len(arr)

# Traverse through all array elements

for i in range(n):

for j in range(0, n-i-1):

# Swap if the element found is greater

# than the next element

if arr[j] > arr[j+1] :

arr[j], arr[j+1] = arr[j+1], arr[j]

我不知道如何将此算法修改为只返回数组中k个最小数的索引。任何使用排序算法或选择算法(如quickselect,quicksort)的帮助,将不胜感激。在

编辑1:所以说数组是:

^{pr2}$

然后它必须返回一个数组:

index_of_least_k = [2,8,1]

对于k=3。在

如果我必须修改排序算法,比如bubble sort,我知道如何更改,以便这次它交换索引,比如:def modified_bubbleSort(arr, index):

n = len(arr)

# Traverse through all array elements

for i in range(n):

for j in range(0, n-i-1):

# Swap if the element found is greater

# than the next element

if arr[j] > arr[j+1] :

index[j], index[j+1] = index[j+1], index[j]

return index

array = [12, 11, 0, 35, 16, 17, 23, 21, 5]

index = [0, 1, 2, 3, 4, 5, 6, 7, 8]

indexOfAllsorted = modified_bubblesort(array, index)

在这种情况下,它返回我:indexOfAllsorted = [2,8,1,0,4,5,7,6]

我不希望这样,因为有额外的5个值,为了避免我的算法应该具有的内存开销:index_of_least_k = [0, 0, 0]

在内存中为k=3,然后在继续时填充它。我希望我说得很清楚。在

EDIT2:我不想在python中寻找任何库或模块来实现这一点。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值