網上大部分都有,但有一些地方我按照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; }}新聞熱點
疑難解答