C++shell排序
shell排序
shell排序在不相邻的元素之间比较和交换。利用了插入排序的最佳时间代价特性,它试图将待排序序列变成基本有序的,然后再用插入排序来完成排序工作**
在执行每一次循环时,Shell排序把序列分为互不相连的子序列,并使各个子序列中的元素在整个数组中的间距相同,每个子序列用插入排序进行排序。每次循环增量是前一次循环的1/2,子序列元素是前一次循环的2倍
**最后一轮将是一次“正常的”插入排序(即对包含所有元素的序列进行插入排序)
shell排序完整源码
const int INCRGAP = 3;
template<class Elem>
void shellsort(Elem A[],int n