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] < A[i - 1] then
/* swap them and remember something changed */
swap( A[i-1], A[i] )
swapped = true
end if
end for
until not swapped
end procedure
if A[i] < A[i - 1]是用来进行大小比较的,但是如果对一些自定义对象进行排序或者想自定义排序方式,就可以传入一个比较函数compare,这个函数的返回值决定元素的大小。
在排序中需要对元素的大小进行比较,
compare函数相当于编程者显式告诉排序函数如何决定元素的大小关系。比如下面的冒泡排序伪代码:
if A[i] < A[i - 1]是用来进行大小比较的,但是如果对一些自定义对象进行排序或者想自定义排序方式,就可以传入一个比较函数compare,这个函数的返回值决定元素的大小。等价于把
if A[i] < A[i - 1]替换成if compare(A[i], A[i - 1]) > 0,其它部分都保持不变.对于其它快速排序、堆排序、归并排序等等是类似的。
sort()方法中的函数是用户定义排序规则的,只是一个排序的规则,不用想太复杂,上面的例子是比较的数字。
再例如,如果要比较的不是数字,而是对象呢,举例说明:
用插入排序演示一下:
参考排序算法