Я пытаюсь реализовать алгоритм сортировки выбором для сортировки несортированного списка/массива, вот что я получил на данный момент:
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)
Проблема, с которой я сталкиваюсь, состоит в том, чтобы получить самые высокие предметы z. т.е. напечатать самый высокий элемент до индекса z
Итак, следует напечатать:
[23,21,14]
Он должен возвращать количество выполненных сравнений элементов (но должен быть алгоритмом сортировки выбором). И не должен делать больше сравнений, чем нужно (должен остановить алгоритм, как только будет найден z-й самый высокий элемент)
обновление: я попытался настроить интерактивную реализацию Python... Я просто не могу понять это
это то, что у меня есть
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)
Это печатает:
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]