All pastes #415557 Raw Edit

Someone

public text v1 · immutable
#415557 ·published 2007-03-29 18:40 UTC
rendered paste body
#include <cstdlib>
#include <iostream>

using namespace std;



void bubbleSort_flag(int a[],int from, int n,  bool reverse)
{
   int i, j, temp, flag;
   for(i=n-1; i>from; i--)
   {
     flag = 1;
     for(j=from; i>j; j++)
     {
       if(reverse==false)
       {                         
           if(a[j]>a[j+1])
           {
             flag = 0;
             temp = a[j];
             a[j] = a[j+1];
             a[j+1] = temp;
           }
       }else
       {
           if(a[j]<a[j+1])
           {
             flag = 0;
             temp = a[j];
             a[j] = a[j+1];
             a[j+1] = temp;
           }
       }
       
     }
     //out this block when flag is true
     //i.e. inner loop performed no swaps, so the list is already sorted
     if(flag)
       break;
   }
}

void print_array(int a[],int size)
{
   int i;
   cout<<"[";
   for(i=0;i<size;i++)
   {
     cout<<a[i]<<",";
   }  
   cout<<"]\n";
}



void petorki(void)
{
    int  a[20]={1,5,3,2,15,225,23,10,1,6,8,4,7,88,231,33,554,113,143,567}; 
    int i;
     
    //sort the whole array 
    bubbleSort_flag(a,0,20,false);
   
    cout<<"Array before is:\n";
    print_array(a,20);

    //reverse sort every even 5
    for(i=5;i<20;i=i+5)
    {
      cout<<i<<",";
      if((i/5)%2!=0)
      {        
         bubbleSort_flag(a,i,i+5,true);
      }               
    }
   
   cout<<"\nArray after is:\n";
   print_array(a,20);
   
     
}


void posledna(void)
{
    int  a[20]={10,0,3,2,15,225,23,20,1,6,8,4,7,88,231,33,554,113,143,999}; 
    int  b[10]={0,0,0,0,0,0,0,0,0,0};
    int i, j, temp, flag, prev,next, from;

    print_array(a,20);

    for(i=19; i>0; i--)
    {
      flag = 1;
      for(j=0; i>j; j++)
      {   
          if(a[j]>=10)
               prev=a[j]%10;
          else if(a[j]<10)
               prev=a[j];

          if(a[j+1]>=10)
               next=a[j+1]%10;
          else if(a[j+1]<10)
               next=a[j+1];
               
           if(prev > next)
           {        
             flag = 0;
             temp = a[j];
             a[j] = a[j+1];
             a[j+1] = temp;
           }
       }
     }
    
    print_array(a,20);
    
    
    for(i=0;i<20;i++)
    {
      if(a[i]>=10)
         b[a[i]%10]++;
      else if(a[i]<10)
         b[a[i]]++;                     
    }
    print_array(b,10);
    
    from=0;
    for(i=0;i<10;i+=b[i])
    {
       int size;
       size=b[i];
       bubbleSort_flag(a,from,size,false); 
       from+=b[i];                 
    }
    
    print_array(a,20);
    
}

int main(int argc, char *argv[])
{
    //petorki();
    //posledna();
    system("PAUSE");
    return EXIT_SUCCESS;
}