回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我希望实现一个选择排序算法来对未排序的列表/数组进行排序,这是我目前得到的结果:</p>
<pre><code>list1 = [14,3,2,21,23,12,3,4]#unsorted array
z = 3
for i in range(len(list1)):
for j in range(i, len(list1)):
if list1[i] < list1[j]:
list1[i], list1[j] = list1[j], list1[i]
print(list1)
</code></pre>
<p>我面临的问题是要得到第z个最高的项目。也就是说,打印最高的项目直到索引z</p>
<p>所以应该打印:</p>
<pre><code>[23,21,14]
</code></pre>
<p>它应该返回进行的项目比较的数量(但必须是选择排序算法)。并且不应该做比它需要的更多的比较(一旦找到第z个最高的项,应该停止算法)</p>
<p>更新:
我尝试过调整交互式python实现。。。我就是想不通</p>
<p>这就是我所拥有的</p>
<pre><code>def selectionSort(alist, k):
count = 0
while count < k:
for fillslot in range(len(alist)-1,0,-1):
print(count)
count += 1
positionOfMax = 0
for location in range(1,fillslot+1):
if alist[location] < alist[positionOfMax]:
positionOfMax = location
temp = alist[fillslot]
alist[fillslot] = alist[positionOfMax]
alist[positionOfMax] = temp
alist = [54,26,93,17,77,31,44,55,20]
selectionSort(alist , 3)
print(alist)
</code></pre>
<p>这张照片:</p>
<pre><code>0
1
2
3 # should it not stop here since count is less than k?
4
5
6
7
[93, 77, 55, 54, 44, 31, 26, 20, 17]
</code></pre>