ジャワヒルソート
ヒル ソートは挿入ソートの一種であり、厳密には縮小増分法とも呼ばれます。基本的な考え方は、分割統治法に似た、配列を複数の配列に分割することですが、ここでの分割は定数 d によって制御されます。
この 0<d<n、n は配列の長さです。このアルゴリズムは、挿入ソートの速度が向上しており、配列の末尾に最小の数値がある場合、挿入アルゴリズムは最後の数値を複製する改良されたアルゴリズムとも言えます。
位置を最初の位置に移動すると、大量のコストが無駄になります。この改良されたヒル ソートを使用すると、データ要素の長期的な移動を実現できます。これがこのアルゴリズムの利点です。
次のようにコードをコピーします。
パッケージ cn.cqu.coce.xutao;
パブリッククラスシェル3 {
public static void main(String args[]){
int a[]={7,43,23,5,3,2,0,6,74,9};
int n=a.length;
for(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
for(int ギャップ=n/2;ギャップ>0;ギャップ/=2){
for(int i=gap;i<n;i++){
for(int j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap){
int temp=a[j+gap];
a[j+ギャップ]=a[j];
a[j]=温度;
}
}
}
for(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
}
}
2番目の例
次のようにコードをコピーします。
クラスシェル
{
public void shell_sort(int [] arrays){
for(int d=5;d>0;d=d-2){
for(int c=0;c<arrays.length-d;c++){
for(int i=c;i<arrays.length;i=i+d){
for(int j=i;j>0;j=jd){
if(j<d)
壊す;
if(配列[j]<配列[jd]){
int tmp;
tmp=配列[j];
配列[j]=配列[jd];
配列[jd]=tmp;
}
}
}
}
snp(配列);
}
}
public void snp(int[] arrays){
for(int i=0;i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
シェル s=新しいシェル();
int[] a={45,20,80,40,26,58,66,70};
s.shell_sort(a);
}
}
実行結果:
次のようにコードをコピーします。
---------- ジャワ ----------
20 70 40 26 58 66 80
20 58 45 26 70 66 80
26 40 45 58 66 70 80
出力完了(所要時間0秒) - 正常終了