希爾排序的理解

2021-10-04 18:04:42 字數 432 閱讀 3770

public static  void shellsort(int arr ){

int j;

int temp;

for (int gap = arr.length/2 ; gap >0; gap/=2) {

for (int i = gap; i //這裡的 i=gap就是插入排序的第二個數,j就是第乙個位置的數,i之所以是加一也要理解,當gap大於一的時候,i+1就是對其他的分割陣列進行排序,當變成i=gap的時候,開始對分割的第乙個陣列開始繼續未完成的插入排序,整個流程就是對每個細分的陣列的插入排序。

j=i-gap;

temp=arr[i];

while (j>=0&&temp

希爾排序:就是不斷分割的插入排序,就很簡單,和插入排序一模一樣,只是將陣列分割

分割之後的排序可以當做乙個個的陣列進行插入排序。

希爾排序的理解

希爾排序是插入排序的一種高效演算法,遞增量排序。我理解為步數排序 因為每次進行一次迴圈的時候,會給這次迴圈乙個跨度 也就是你一次能邁多少步 void sort int a,int length int step 0 這個while迴圈,目的是找出對於當前陣列下,最大的步數,也就是最多能擴多少,到最後...

希爾排序理解

插入排序的 演算法複雜度為o n2 但如果序列為正序可提高到o n 而且直接插入排序演算法比較簡單,希爾排序利用這兩點得到了一種改進後的插入排序。希爾排序 將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序 然後再選擇乙個更小的增量,再將陣列分割...

理解希爾排序

最近回顧了一下the c programming language,其中提到了乙個用來演示 for 迴圈的小例子,如下 shell sort void shellsort int,int int main int b shellsort b,10 void shellsort int v,int n...