我从维基百科得到了这个伪代码:
procedure bubbleSort( A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
/* if this pair is out of order */
if A[i-1] > A[i] then
/* swap them and remember something changed */
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure
这来自a book(名为计算机科学原理)
BubbleSort( list )
length <-- lenght of list
do {
swapped_pair <-- false
index <-- 1
while index <= length - 1 {
if list[index] > list[index + 1] {
swap( list[index], list[index + 1] )
swapped_pair = true
index <-- index + 1
}
}
} while( swapped = true )
end
我不知道哪个是更好的伪代码。
我不理解的部分是swapped_pair&lt; - false部分和最后一行。
在第4行写入swapped=false
或swapped_pair <-- false
时。
为什么一开始就设置为false?如果没有设置为假,会发生什么?
最后几行,在维基百科上写道:
end if
end for
until not swapped
end procedure
根据书中的伪代码,它写道:
while( swapped = true )
这些最后一行是什么意思?
答案 0 :(得分:1)
swapped
变量会跟踪是否在最后一次通过数组时进行了交换。
这是我们可以做的优化之一,可以使冒泡排序更有效率。 如果您对更多优化感兴趣,可以在这里查看: http://www.c-programming-simple-steps.com/bubble-sort.html
然而,即使是优化的,冒泡排序也太低效,无法在实践中使用。在学习的过程中,这是一个有趣的案例,但如果您需要一个简单的排序算法,请使用插入排序。