Shell sort
1.Shell sort
是insertion sort的改良, 又稱為增量遞減排序排序法 (diminishing increment sort), 謝耳排序法
將原本的list藉由"increment"來切成sub-list
每個sub-list皆用insertion sort來排序
逐漸降低Increment直到等於1
利用前一次排序的成果來加快排序
The cool thing is that since that since the list was almost sorted it's far easier to get to a fully sorted state with increment set to 1.
Shell sort的表現比Insertion sort好
2.Procedures
3.Example code (Java)
Modified insertion sort
Insertion sort takes in a start index and an increment
All iterations through the list are based on the increment
Adjacent elements separated by an increment are compared
Break out of the inner loop if no element is swapped
Shell sort
Picked an increment at random
Slowly reduce the increment
4.Complexity
Getting the exact complexity of Shell sort is hard because it depends on the increment values chosen
It's also not clear what the best increment value is.
The complexity of Shell sort is better than insertion sort as the final iteration sort with increment = 1 has to work with a nearly sorted list.
The complexity of Shell sort is somewhere between O(N) and O(N^2)
Different value of increments produce different complexities
The algorithm is adaptive since it's based on insertion sort which is adaptive.
It takes O(1) extra space, it sorts in space (No extra space)
因為用原本的list儲存 (in-place 演算法)
Last updated