今天看到了插入排序,升级版是希尔排序。然而明白了排序原理,但是代码死活和原理对不上。没办法,就是笨(~ ̄(OO) ̄)ブ
你看到希尔排序的原理图通常是这样的
感觉酷炫吊炸天,但是,真的不好和代码对应起来啊o(╥﹏╥)o
希尔排序的思想是分组插入。通常gap从length/2开始,每次/2。每隔gap的元素为一组,每组length/gap个元素,共gap组。所以一开始是每组2个元素进行插入排序,然后是4个,8个…
原理其实也不是很难嘛,接着来看下代码(C++):
template<typename T>
void shell_sort(T arr[], int len) {
int gap, i, j;
T temp;
for (gap = len >> 1; gap > 0; gap >&g