一队他、希爾排序思想
希爾排序是基于插入排序的快速的排序算法徒役,先分組后對(duì)每組進(jìn)行直接插入排序捏境,再分組再直接執(zhí)行插入排序于游,組元素個(gè)數(shù)按照固定規(guī)則遞減。最后一次分組則是一個(gè)元素即為一組通過(guò)這次插入排序后即完成排序操作垫言。
希爾排序更高效的原因是它權(quán)衡了子數(shù)組的規(guī)模和有序性贰剥。排序之初各個(gè)子數(shù)組都很短,排序之后子數(shù)組都是部分有序的筷频,這兩種情況都很適合插入排序
步驟如下:
0蚌成、初始狀態(tài):arr={6,4,1,8,2,3,3,7,9,2,8}
1、按間隔為4(算法中的3*h+1得來(lái))分組結(jié)果:
{arr[0]=6凛捏,arr[4]=2},{arr[1]=4担忧,arr[5]=3},{arr[2]=1,arr[6]=3},{arr[3]=8葵袭,arr[7]=7}剩余{9,2乖菱,8}
2坡锡、每組使用插入排序算法進(jìn)行排序(交換位置)結(jié)果:
{arr[0]=2,arr[4]=6},{arr[1]=3窒所,arr[5]=4},{arr[2]=1鹉勒,arr[6]=3},{arr[3]=7,arr[7]=8}
{2,3,1,7,6,4,3,8,9,2,8}
3吵取、接下來(lái)按1(h=h/3)分組即最后一次的插入排序禽额,完成。
代碼如下(shell sort 00)
shellsort00.png