نوع جافا هيل
فرز التل هو نوع من فرز الإدراج، ويمكن أيضًا أن يطلق عليه بشكل واضح طريقة الزيادة المتقلصة. الفكرة الأساسية هي تقسيم المصفوفة إلى عدة مصفوفات، تمامًا مثل طريقة فرق تسد، ولكن يتم التحكم في التقسيم هنا بواسطة ثابت d.
هذا 0<d<n, n هو طول المصفوفة. تتميز هذه الخوارزمية بسرعة فرز الإدراج، ويمكن اعتبارها أيضًا خوارزمية محسنة. في خوارزمية الإدراج، إذا كان هناك رقم أصغر في نهاية المصفوفة، فستقوم خوارزمية الإدراج بتكرار الرقم الأخير.
سيؤدي نقل الموضع إلى الموضع الأول إلى إهدار الكثير من المال، ويمكن أن يؤدي استخدام فرز Hill المحسّن إلى تحقيق حركة طويلة المدى لعناصر البيانات. هذه هي ميزة هذه الخوارزمية.
انسخ رمز الكود كما يلي:
الحزمة cn.cqu.coce.xutao;
غلاف الطبقة العامة 3 {
الفراغ الثابت العام الرئيسي(String args[]){
int a[]={7,43,23,5,3,2,0,6,74,9};
int n=a. length;
ل(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
ل(int الفجوة=n/2;gap>0;gap/=2){
ل(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+gap]=a[j];
a[j]=درجة الحرارة;
}
}
}
ل(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
}
}
المثال الثاني
انسخ رمز الكود كما يلي:
فئة شل
{
public void Shell_sort(int [] صفائف){
ل(int د=5;د>0;د=د-2){
for(int c=0;c<arrays.length-d;c++){
for(int i=c;i<arrays.length;i=i+d){
ل(int j=i;j>0;j=jd){
إذا (ي<د)
استراحة؛
إذا(المصفوفات[ي]<المصفوفات[جد]){
كثافة العمليات تمة؛
tmp=arrays[j];
المصفوفات[j]=المصفوفات[jd];
arrays[jd]=tmp;
}
}
}
}
snp(المصفوفات);
}
}
public void snp(int[] صفائف){
for(int i=0;i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
الفراغ العام الثابت الرئيسي (String[] args)
{
Shell s=new Shell();
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 ثانية) - الإنهاء العادي