function comb_sort(A: list[1..n]){
gap = A.size
rate = 1.3
while gap <= 1 && swap = 0{
//更新間距
gap := (int)gap/rate
swap := 0
i := 0
//梳一次
while i + gap < A.size{
if A[i] > A[i+gap]
A(array[i] , A[i+gap])
swap := 1
i := i + 1
}
}
}
gap: 6 [初始設定gap=size/1.3]
cmp l[0]=8,l[6]=2
change [2, 4, 3, 7, 6, 5, 8, 1]
cmp l[1]=4,l[7]=1
change [2, 1, 3, 7, 6, 5, 8, 4]
one time: [2, 1, 3, 7, 6, 5, 8, 4]
gap: 4
cmp l[0]=2,l[4]=6
cmp l[1]=1,l[5]=5
cmp l[2]=3,l[6]=8
cmp l[3]=7,l[7]=4
change [2, 1, 3, 4, 6, 5, 8, 7]
one time: [2, 1, 3, 4, 6, 5, 8, 7]
gap: 3
cmp l[0]=2,l[3]=4
cmp l[1]=1,l[4]=6
cmp l[2]=3,l[5]=5
cmp l[3]=4,l[6]=8
cmp l[4]=6,l[7]=7
one time: [2, 1, 3, 4, 6, 5, 8, 7]
gap: 2
cmp l[0]=2,l[2]=3
cmp l[1]=1,l[3]=4
cmp l[2]=3,l[4]=6
cmp l[3]=4,l[5]=5
cmp l[4]=6,l[6]=8
cmp l[5]=5,l[7]=7
one time: [2, 1, 3, 4, 6, 5, 8, 7]
gap: 1
cmp l[0]=2,l[1]=1
change [1, 2, 3, 4, 6, 5, 8, 7]
cmp l[1]=2,l[2]=3
cmp l[2]=3,l[3]=4
cmp l[3]=4,l[4]=6
cmp l[4]=6,l[5]=5
change [1, 2, 3, 4, 5, 6, 8, 7]
cmp l[5]=6,l[6]=8
cmp l[6]=8,l[7]=7
change [1, 2, 3, 4, 5, 6, 7, 8]
one time: [1, 2, 3, 4, 5, 6, 7, 8]
def comb_sort(l):
dis = int(len(l)/1.3)
while dis:
for i in range(len(l)-dis):
if l[i] > l[i+dis]:
l[i], l[i+dis] = l[i+dis], l[i]
dis = int(dis/1.3)
2 start
A.奇偶排序概念,過程描述?
B. 時間複雜度?空間複雜度?是否是穩定排序?
C.適用場景