希爾排序是插入排序的一種,在進行演算法編寫的時候會多次呼叫到插入排序。希爾排序的核心點就是縮小增量級。
那麼怎麼去縮小增量級呢?
通常都是用陣列的長度除二得到第一增量級first(array.length/2),然後通過first/=2去迴圈得到其他的增量級,直到增量級等於一。當然取增量級的方式不盡相同,當根據具體的情況而定。
為了清晰的表述,演算法的具體思想,我習慣通過圖的方式去理解,這樣思路會變的更加的清晰。下面是shellsort的**:
有第一趟的執行結果,都下面的**實現就會變得簡單很多。
public
class
shellsort
implements
sort
}insertsort(data, 0, 1);
display(data);
}/**
*@param data
*@param j
*@param i
*/private
void
insertsort(int data, int start, int end) }}
public
void
display(int data)
}public
static
void
main(string args) ;
shellsort sort = new shellsort();
sort.sort(array);
}
}
希爾排序(Shell Sort)
希爾排序 shell sort 又叫做縮小增量排序 diminishing increment sort 是一種很優秀的排序法,演算法本身不難理解,也很容易實現,而且它的速度很快。基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中...
希爾排序 shellsort
希爾排序 shellsort 又叫增量遞減 diminishing increment 排序,是由d.l.shell發明的,這個演算法是通過乙個逐漸減小的增量使乙個陣列逐漸趨近於有序從而達到排序的目的。假設有乙個陣列int data 16 首先將這個增量設為16 2 8,這樣就將這個陣列分成了8個子...
希爾排序(ShellSort)
希爾排序 shellsort cpp view plain copy include shellsort.h include print.h 希爾排序,分組進行插入排序,最後一步仍然是插入排序,但是因為之前的操作使逆序數減少,所以相對單純的插入排序效率高。void shellsort inta,in...