semacam bukit jawa
Penyortiran bukit adalah salah satu jenis penyortiran penyisipan, dan juga dapat disebut dengan metode pertambahan menyusut. Ide dasarnya adalah membagi sebuah array menjadi beberapa array, mirip dengan metode membagi dan menaklukkan, tetapi pembagian di sini dikendalikan oleh konstanta d.
0<d<n, n ini adalah panjang array. Algoritma ini memiliki kecepatan penyisipan, dan juga dapat dikatakan sebagai algoritma yang ditingkatkan. Dalam algoritma penyisipan, jika ada angka terkecil di akhir array, algoritma penyisipan akan menduplikasi angka terakhir.
Memindahkan posisi ke posisi pertama akan membuang banyak uang. Menggunakan penyortiran Hill yang ditingkatkan ini dapat mencapai pergerakan elemen data dalam jangka panjang. Inilah kelebihan algoritma ini.
Copy kode kodenya sebagai berikut:
paket cn.cqu.coce.xutao;
shell kelas publik3 {
public static void main(String args[]){
int a[]={7,43,23,5,3,2,0,6,74,9};
int n=a.panjang;
untuk(int i=0;i<n;i++)
Sistem.keluar.cetak(a[i]+"/t");
Sistem.keluar.println();
untuk(int celah=n/2;celah>0;celah/=2){
untuk(int i=celah;i<n;i++){
untuk(int j=i-celah;j>=0&&a[j]>a[j+gap];j-=celah){
int suhu=a[j+celah];
a[j+celah]=a[j];
a[j]=temp;
}
}
}
untuk(int i=0;i<n;i++)
Sistem.keluar.cetak(a[i]+"/t");
Sistem.keluar.println();
}
}
Contoh kedua
Copy kode kodenya sebagai berikut:
kelas cangkang
{
public void shell_sort(int [] array){
untuk(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){
untuk(int j=i;j>0;j=jd){
jika(j<d)
merusak;
if(array[j]<array[jd]){
ke dalam tmp;
tmp=array[j];
array[j]=array[jd];
array[jd]=tmp;
}
}
}
}
snp(array);
}
}
kekosongan publik snp(int[] array){
for(int i=0;i<array.panjang;i++){
Sistem.keluar.cetak(array[i]+" ");
}
Sistem.keluar.println();
}
public static void main(String[] args)
{
Shell s=Shell baru();
int[] a={45,20,80,40,26,58,66,70};
s.shell_sort(a);
}
}
Hasil berjalan:
Copy kode kodenya sebagai berikut:
---------- jawa ----------
20 70 40 26 58 66 80
20 58 45 26 70 66 80
26 40 45 58 66 70 80
Output selesai (membutuhkan waktu 0 detik) - penghentian normal