梳排序(Comb sort)是一种由Wlodzimierz Dobosiewicz于1980年所发明的不稳定排序算法,并由Stephen Lacey和Richard Box于1991年四月号的Byte杂志中推广。
直接伪代码:
1:j <--n,s<--1.3,flag<--false.
2:While J>1 or flag=true do
3: i<--0,j<--max{|j/s|,1}, flag<--false
4 while i+j<n do
5: if a<i> > a<i+j> then
6: exchange a<i> and a<i+j>
7: flag<--true
8: end if
9: i=i+1
10: end while
11:end while
梳排序是从很大的j开始,逐渐缩小直到1。1.3作为递减速率,可以用其他的数,但是研究表明1.3最好,也有人提议用
作为衰减速率。
下面是我用python实现的代码:
number=[4,6,7,3,5,2,8,0,9,1]
n=len(number)
j=n
s=1.3
print(number)
while j>1:
i=0
if j/s>1:
j=int(j/s)
else:
j=1
while i+j<n:
if number[i]>number[i+j]:
a=number[i]
number[i]=number[i+j]
number[i+j]=a
i=i+1
print(number)#可以看到每一步排序的结果
print(number)
图省事,就没加flag标志。排序效率还可以,但也是一种不稳定的算法。