сортировка по холмам в Java
Сортировка по холму — это тип сортировки вставками, которую также можно назвать методом уменьшения приращения. Основная идея состоит в том, чтобы разделить массив на несколько массивов, что-то вроде метода «разделяй и властвуй», но здесь разделение контролируется константой 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");
Система.out.println();
for(intgap=n/2;gap>0;gap/=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];
а[j+пробел]=а[j];
а[j]=температура;
}
}
}
for(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
Система.out.println();
}
}
Второй пример
Скопируйте код кода следующим образом:
класс Shell
{
public void Shell_sort (массивы int []) {
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){
если (j<d)
перерыв;
если (массивы [j] <массивы [jd]) {
интервал времени;
tmp=массивы[j];
массивы[j]=массивы[jd];
массивы [jd] = tmp;
}
}
}
}
snp (массивы);
}
}
public void snp(int[] arrays){
for(int i=0;i<arrays.length;i++){
System.out.print(массивы[i]+" ");
}
Система.out.println();
}
public static void main(String[] args)
{
Оболочка s = новая оболочка();
интервал [] а = {45,20,80,40,26,58,66,70};
s.shell_sort(а);
}
}
Результаты запуска:
Скопируйте код кода следующим образом:
---------- Java ----------
20 70 40 26 58 66 80
20 58 45 26 70 66 80
26 40 45 58 66 70 80
Вывод завершен (заняло 0 секунд) – нормальное завершение