我們都知道希爾排序是插入排序的優化。
希爾排序會在進行插入排序前把數列分組,然後會根據需要把陣列內部的數字先進行順序排列,最終減少插入排序時移動元素的次數,達到優化的目的。
但是我這邊簡化了部分插入排序的**,結果在最後測試的時候,插入排序竟然會比希爾排序要快。這裡似乎是說希爾排序的**還能再繼續優化?或者還有別的原因?這裡我只能把該問題記錄了。希望能有大神能給我解答。下面貼出**。
//插入排序
public static int insertionsort(int a)
}return a;
}
//希爾排序
//這種是設哨兵的希爾排序,已經比不設哨兵的希爾排序移動次數要少,速度更快很多倍了,但是還是比
//上面的插入排序要慢。
public static int shellsort1(int data) else
}data[j] = temp;}}
return data;
}
//建立隨機數組的方法。
public static int random(int n , int begin , int end)
//建立指定長度的陣列
int nums = new int[n];
//為陣列賦值
for (int i = 0; i < n; i++)
return nums;
}
請神請神,我這邊後面確實沒時間研究這個,希望能有大神給我解答。 coding A D 希爾排序(插入排序一種)
1 希爾排序 shell sort 這個排序方法又稱為縮小增量排序,是1959年d l shell提出來的。該方法的基本思想是 設待排序元素序列有n個元素,首先取乙個整數increment 小於n 作為間隔將全部元素分為increment個子序列,所有距離為increment的元素放在同乙個子串行中...
一種插入排序實現
插入排序是一種較簡單的排序演算法。思想 它是由 n 1趟排序組成,對於p 1趟到p n 1趟,插入排序保證從位置0到位置p 1上的元素均已排好序了。時間複雜度 o n n 平均情況下時間複雜度也是o n n includeint insert sort int a,int n a j temp re...
複習一下插入排序和希爾排序
首先是插入排序 for i 1 i n i for j i 1 j 0 a j a j 1 j swap a j a j 1 如果完全按照插入排序的思維,先插入,再後推,程式語句塊會變得比較臃腫 這裡用多次swap的方法,可以讓項一步一步往前移動,語句塊就簡潔很多,效果和時間上是一樣的 然後是希爾排...