tri par colline java
Le tri Hill est un type de tri par insertion et peut également être appelé de manière frappante méthode d'incrémentation par réduction. L’idée de base est de diviser un tableau en plusieurs tableaux, un peu à la manière de la méthode diviser pour régner, mais la division est ici contrôlée par une constante d.
Ce 0<d<n, n est la longueur du tableau. Cet algorithme a la vitesse du tri par insertion et peut également être considéré comme un algorithme amélioré. Dans l'algorithme d'insertion, s'il y a le plus petit nombre à la fin du tableau, l'algorithme d'insertion dupliquera le dernier.
Déplacer la position vers la première gaspillera beaucoup d'argent. L'utilisation de ce tri Hill amélioré peut permettre un mouvement sur de longues périodes d'éléments de données. C'est l'avantage de cet algorithme.
Copiez le code comme suit :
paquet cn.cqu.coce.xutao ;
classe publique shell3 {
public static void main(String args[]){
int a[]={7,43,23,5,3,2,0,6,74,9};
int n=a.longueur;
pour(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
pour(int écart=n/2;écart>0;écart/=2){
pour(int i=écart;i<n;i++){
pour(int j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap){
int temp=a[j+écart];
une[j+écart]=une[j];
a[j]=temp;
}
}
}
pour(int i=0;i<n;i++)
System.out.print(a[i]+"/t");
System.out.println();
}
}
Deuxième exemple
Copiez le code comme suit :
classe Shell
{
public void shell_sort(int [] tableaux){
pour(int d=5;d>0;d=d-2){
pour(int c=0;c<arrays.length-d;c++){
pour(int i=c;i<arrays.length;i=i+d){
pour(int j=i;j>0;j=jd){
si(j<d)
casser;
si(tableaux[j]<tableaux[jd]){
int tmp;
tmp=tableaux[j];
tableaux[j]=tableaux[jd];
tableaux[jd]=tmp;
}
}
}
}
snp(tableaux);
}
}
public void snp(int[] tableaux){
pour(int i=0;i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
public static void main (String[] arguments)
{
Shell s=nouveau Shell();
int[] a={45,20,80,40,26,58,66,70} ;
s.shell_sort(a);
}
}
Résultats en cours d'exécution :
Copiez le code comme suit :
----------java ----------
20 70 40 26 58 66 80
20 58 45 26 70 66 80
26 40 45 58 66 70 80
Sortie terminée (a pris 0 seconde) - terminaison normale