la teoría de algoritmos
Ordenar Cher Nombre (de Shell) se deriva de su inventor Donald Shell, el algoritmo es uno de los primeros algoritmo de tiempo cuadrática para romper la barrera, sin embargo, hasta varios años después de que fue encontrado originalmente prueba de su sub tiempo cuadrática obligado. Funciona mediante la comparación de los elementos de separación de un intervalo predeterminado; cada distancia de viaje utilizado en la comparación con el algoritmo de la distancia disminuye, hasta sólo el viaje en el último comparadores elementos de clasificación adyacentes. Por esta razón, a veces llamado Cher tipo reducido tipo incrementales (incremento disminuyendo especie)
algoritmo gráfico
template <typename T>
void shellSort(vector<T> & v)
{
for (int gap = v.size() / 2; gap > 0; gap/=2)
{
// 插入排序代码
for (int i = gap; i < v.size(); i++)
{
T tmp = v[i];
int j = i;
for (; j >= gap && v[j - gap] > tmp; j -= gap)
{
v[j] = v[j - gap];
}
v[j] = tmp;
}
}
}
complejidad del tiempo
Preferiblemente: O (n)
peor: O (nlog2n)
media: O (nlog2n)