**如下:
package com.zm.testsort;
/** *希爾排序的最優化
*@author zm
*/public
class
shellsort
int d = 1;
while(d <= n/3)
while(d > 0)
a[j+d] = temp;
}
d = (d-1)/3;//縮減間隔序列
}
}public
static
void
main(string args) ;
getshellsort(a);
system.out.print("希爾排序:");
for(int i = 0; i < a.length; i++)
}}
會根據增量的不同而不同,一般來說:
時間複雜度:
1. 最好情況:o(n^1.3)
2. 最壞情況:o(n^2)
空間複雜度:o(1)
穩定性:不穩定(相同元素的相對位置會改變)
3.1:希爾排序是對直接插入排序的一種優化,可以用於大型的陣列,希爾排序比插入排序和選擇排序要快的多,並且陣列越大,優勢越大。
希爾排序 java實現
先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。操作方法 選擇乙個增量序列t1,t2,tk,其中ti tj,tk 1 按增量序列個數k,對序列進行k 趟排序 每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m...
希爾排序 Java實現
希爾排序實際上是針對插入排序的一種優化演算法。當被插入的元素要移動到陣列的開始位置時需要比較的次數相當大,通過改變相鄰的元素比較為距離間隔為h的元素比較 h逐漸減小為1 就能減少比較的次數。如下 public class tester shellsort t for int a t 將陣列中下標為i...
希爾排序 Java實現
希爾排序是對插入排序的優化,減少了元素移動位置的次數,又叫做縮小增量排序 先將待排序的陣列元素按照增量分成多個子串行,對每個子串行進行插入排序,直到子串行相對有序 然後縮小增量,重複第一步的操作 直到增量為1的時候,再最終進行一次插入排序,使得元素有序。希爾排序 public static void...