Cod sursa(job #1022930)

Utilizator Andrei_x94Duca Andrei Andrei_x94 Data 6 noiembrie 2013 10:42:15
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <stdlib.h>

using namespace std;

int a[100];

void merge(int,int,int);

void mergesort(int st,int dr)
{
 int m;
 if(st<dr)
 {
  m=(st+dr)/2;
  
  mergesort(st,m);
  
  mergesort(m+1,dr);
  
  merge(st,m,dr);
 }
}


void merge(int st,int m,int dr)
{
 int h,i,j,b[100],k;
 h=st;
 i=st;
 j=m+1;

 while((h<=m)&&(j<=dr))
 {
  if(a[h]<=a[j])
  {
   b[i]=a[h];
   h++;
  }
  else
  {
   b[i]=a[j];
   j++;
  }
  i++;
 }
 if(h>m)
 {
  for(k=j;k<=dr;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 else
 {
  for(k=h;k<=m;k++)
  {
   b[i]=a[k];
   i++;
  }
 }
 for(k=st;k<=dr;k++) a[k]=b[k];
}


int main()
{
 int n,i;

 cin>>n;
 
 for(i=1;i<=n;i++)
 {
  cin>>a[i] ;
 }
 mergesort(1,n);
 cout<<endl;

 for(i=1;i<=n;i++)
 cout<<a[i]<<" ";
 
 system("PAUSE");
 return 0;
}