网上大部分都有,但有一些地方我按照python特点做了些变化。
其中有一个让我很疑惑的地方,希尔排序的定义是:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序。
我看过很多的博客,甚至包括我本科的数据结构教材,一概都是在算法中先分组,然后两两交换,但按照希尔排序的定义, 难道不是应该先分组,然后使用直接插入排序?, 网上和教材中使用的代码普遍是“希尔冒泡法”, 我不知道是我理解问题,还是大家的以讹传讹。
我贴出教材中的代码,有兴趣的朋友可以对照我上面的代码,看看有什么不同,
void ShellSort(int R[], int n){ int i,j,gap; int tmp; gap = n / 2; while(gap > 0) { for(i = gap;i < n;i++) { tmp = R[i]; j = j - gap; while(j >= 0 && tmp < R[j]) { R[j + gap] = R[j]; j = j - gap; } R[j + gap] = tmp; } gap = gap / 2; }}新闻热点
疑难解答