Tömb feltöltése véletlen számokkal és az elemek elrendezése shell-rendezéssel, eljárások használatával (Shellrendezes.java) public class Shellrendezes{ public static int n=10; public static int[] a=new int[n]; public static void feltolt(){ int i=0; while(i<n){ a[i]=(int)(90*Math.random())+1; i=i+1; } } public static void kiir(){ int i=0; while(i<n){ System.out.println(a[i]); i=i+1; } } public static void cserel(int i,int j){ int x; x=a[j]; a[j]=a[i]; a[i]=x; } public static void rendez(int kezd,int k){ A rendező eljárás, mellyel minden k-adik elemet összehasonlítjuk, szükség esetén cseréljük. int i,j; i=(kezd+k)-1; while(i<n){ Hogy ha a átlépjük a tömb elemeinek számát, akkor a ciklus megáll. j=i; while(j>k-1){ if(a[j]<a[j-k]){ cserel(j,j-k); } else break; j=j-k; } i=i+k; } } public static void krendez(int k){ Előrendezés eljárása. A benne lévő ciklus segítségével fogjuk meghívni a rendezést minden elemre. int i; i=0; while(i<k){ Végigmegyünk minden tömbelemen. rendez(i,k); Meghívjuk az aktuális indexű elemre az aktuális lépésű (31,15...) előrendezést. i=i+1; } } public static void shell(){ krendez(31); Előrendezéseket hajtunk végre, így gyorsítva a rendezési folyamatot. Az, hogy először a 31., majd a 15., 7., 3. és 1. elemeket rendezzük, kisérletezések során alakult ki. Ez a rendezés nagy elemszámú tömbök, vagy sorozatokat esetén ideális. Természetesen minden szám elrendezésre kerül. krendez(15); krendez(7); krendez(3); krendez(1); } public static void main(String[] args){ feltolt(); System.out.println("A szamok rendezes elott:"); kiir(); System.out.println(" "); shell(); System.out.println("A szamok rendezes utan:"); kiir(); } }