Я думаю, что ваш код - это скорее форма выбора, чем настоящая пузырьковая сортировка.в то время как ваш алгоритм записывает элемент min в начале массива, предполагается, что сортировка пузырьков меняет местами смежные элементы,
Помимо уже обнаруженной проблемы (строка 12), в конце первого цикла элемент min будетположение 1 и внутренний цикл может начинаться с j = 2.Таким образом, строка 17 может быть j=i+1
для небольшой оптимизации.
Вот реализация пузырьковой сортировки.Я изменил тесты, чтобы уменьшить количество меток, и использую символические метки для получения более чистого кода.
integer i,j,arr_size
character*26 arr(1000), tmp
i = 1
startouter if(i>=arr_size) go to endouter
j=1
startinner if(j>=arr_size) go to endinner
if(arr(j) .le. arr(j+1)) go to noswap
tmp = arr(j)
arr(j) = arr(j+1)
arr(j+1) = tmp
noswap j = j + 1
go to startinner
endinner i = i + 1
go to startouter
endouter return
end