Вы должны использовать одну из предоставляемых библиотек подпрограмм сортировки, но, для чего бы это ни стоило, каноническая пузырьковая сортировка может быть выполнена следующим образом:
def bubblesort (array, count):
limit = count - 2
didSwap = true
while (didSwap) {
didSwap = false
for pos = 0 to limit:
if array[pos] > array[pos+1]:
temp = array[pos]
array[pos] = array[pos+1]
array[pos+1] = temp
didSwap = true
endif
endfor
limit = limit - 1
endwhile
enddef
Я бы использовал это только тогда, когда предоставляемые библиотекой подпрограммы по какой-то причине не могут использоваться, и даже тогда, только для небольших наборов данных.
Он относительно эффективен (в отношении сортировки по пузырькам), поскольку не перепроверяет элементы, которые уже были размещены в правильной позиции (каждая итерация перемещает еще один элемент в правильную позицию вверху списка, следовательно, использование limit
) и будет завершено после итерации, в которой перестановки не выполняются (т. е. список сортируется).