24.1.12

Sortarile

public class tema {
static void inssort(int x[]){
      int j=0;
      int i=0;
      int n=x.length;
      for(j=0;j<n;j++){
        int k=x[j];
        i=j-1;
      while((i>=0)&&(x[i]>k)){x[i+1]=x[i];
                i=i-1;       }
              x[i+1]=k;     }
      }

static void selsort1(int x[]){    //selsort1
        int i=0;
        int j=0;
        int n=x.length;
    for(i=0;i<n-1;i++){
        int min=i;
       
      for(j=i+1;j<n;j++)
          if(x[j]<x[min])
              min=j;
        int a=x[i];
        x[i]=x[min];
        x[min]=a;
    }
}
/*static void selsort2(int x[]){
        int i=0;
        int j=0;
        int n=x.length;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++){
            if(x[j]<x[i])
           
               
        }
   
}*/
static void bubblesort1(int x[]){
        int i=0;
        int j=0;
        int n=x.length;
   
    for( i=0;i<n;i++)
        for(j=0 ;j<n-1;j++)
                if(x[j]>x[j+1]){
                    int a=x[j];
                    x[j]=x[j+1];
                    x[j+1]=a;
                }
}
static void bubblesort2(int x[]){           
    int i=0;
    int j=0;
    int n=x.length;

for( i=0;i<n-1;i++)
    for(j=0 ;j<n-i;j++)
            if(x[j]>x[j+1]){
                int a=x[j];
                x[j]=x[j+1];
                x[j+1]=a;
            }
}

static void quicksort(int x[], int primul,int ultimul){
       
        int temp,min,max,mijl;
       
        mijl=x[primul+(ultimul-primul)/2];
        min=primul;max=ultimul;
       
        do
        {   
                while ( x[min]< mijl )
                    min++;
                while ( x[max]>mijl )
                    max--;
               
                if (min<=max){
                    temp=x[min];
                    x[min++]=x[max];
                    x[max--]=temp;
                                   
                }
               
        }     while(min<=max);   
               
              
                if (primul < max){
                    quicksort (x,primul,max);}
                if (ultimul > min){
                    quicksort (x,min,ultimul);}
           
}

static void mergesort(int x[],int st, int m , int dr){
       
        int b[]=new int[100000];
                       
                       
          int i,j,k;
       
        i=0;j=st;
       
        while(j<=m)
            b[i++]=x[j++];
       
        i=0;k=st;
       
        while((k<j)&& (j<=dr))
            if(b[i]<=x[j])
                x[k++]=b[i++];
            else
                x[k++]=x[j++];
   
        while(k<j)
            x[k++]=b[i++];
}
static void merge(int x[],int st,int dr){
    if(st<dr)
    {
        int m =(st+dr)/2;
        merge(x,st,m);
        merge(x,m+1,dr);
        mergesort(x,st,m,dr);
    }
}

public static void main(String [] args){
   
      int tab[] = new int[100000];
      for(int i=0;i<tab.length;i++)
        tab[i]=(int)Math.round(Math.random()*10000);
      long t1=System.currentTimeMillis();
               inssort(tab);                        // in jur de 6 secunde // 8 CPU'S
      long t2=System.currentTimeMillis();
          long d=t2-t1;
         
         
     //     for(int k=0;k<tab.length;k++)
    //      System.out.println(tab[k]);
         
          
              System.out.println(d);
             
/////////////////////////////////////////////////////////////             
             
      int tab1[]=new int[100000];
      for(int i=0;i<tab1.length;i++)
          tab1[i]=(int)Math.round(Math.random()*10000);
      long t3=System.currentTimeMillis();
          selsort1(tab1);                        // in jur de 14    secunde               
      long t4=System.currentTimeMillis();
         long e=t4-t3;  
              
        // for(int k=0;k<tab1.length;k++)
        //     System.out.println(tab1[k]);
         
              System.out.println(e);
             
////////////////////////////////////////////////////////////             
         
     int tab2[]=new int[100000];
     for(int i=0;i<tab2.length;i++)
         tab2[i]=(int)Math.round(Math.random()*10000);
     long t5=System.currentTimeMillis();
         bubblesort1(tab2);                        // in jur de  36 secunde
     long t6=System.currentTimeMillis();
         long f=t6-t5;
        
     //    for(int k=0;k<tab2.length;k++)
     //        System.out.println(tab2[k]);
        
         System.out.println(f);
        
////////////////////////////////////////////////////////////////             
     
     int tab3[]=new int[100000];
     for(int i=0;i<tab3.length;i++)
         tab3[i]=(int)Math.round(Math.random()*10000);
    
     long t7=System.currentTimeMillis();
    
     quicksort (tab3,0,99999);            // 14 milisecunde :)) asta e mai rapid ca Buggati :))
    
     long t8=System.currentTimeMillis();
         long g=t8-t7;
        
         //for(int k=0;k<tab3.length;k++)
         //    System.out.println(tab3[k]);
        
         System.out.println(g);

////////////////////////////////////////////////////////////////
        
         int tab4[]=new int[100000];
         for(int i=0;i<tab3.length;i++)
             tab4[i]=(int)Math.round(Math.random()*10000);
        
         long t9=System.currentTimeMillis();
        
             merge(tab4,0,99999);            // 7 secunde    
            
           long t10=System.currentTimeMillis();
             long h=t10-t9;
        
         //for(int k=0;k<tab4.length;k++)
         //    System.out.println(tab4[k]);
        
        System.out.println(h);
   
      }
}

No comments:

Post a Comment

Scala & Kolacny Brothers - Creep