Sortowanie – mergeSort

Program: sortujący tablicę dwuwymiarową poprzez mergeSort.

Jak w opisie.

Kompilator: Dev C++

Galeria:

Program w akcji.

Kod programu:

#include <cstdlib>
#include <iostream>
#include <cmath>
#include <time.h>

using namespace std;
const int r=30;

void mergeSort(int a[],int ip, int ik)
{
     int is,i1,i2,i,p[r];
     is = (ip+ik+1)/2;
     if(is-ip>0)
        mergeSort(a,ip,is-1);
     if(ik-is>0)
        mergeSort(a,is,ik);
	 i1=ip; i2=is;
     for(i=ip; i<=ik;i++)
       if((i1==is)||((i2<=ik)&&(a[i1]>a[i2])))
          p[i]=a[i2++];
       else
          p[i]=a[i1++];
     for(i=ip;i<=ik;i++)
     a[i]=p[i];
}

int main(int argc, char *argv[])
{
 int a[r],i=0,j=0;
 srand((unsigned) time(NULL)); 
 for(i=0;i<r;i++) 
	a[i]=rand()% 100;
 for(i=0;i<r;i++) 
	 cout<<a[i]<<'\t';
 cout<<endl;
 
 //pomiar czasu
 time_t start,end;
 double diff;
 time(&start);
 
 mergeSort(a,0,r-1);
 
 //koniec pomiaru czasu
 time(&end);
 diff = difftime(end,start);

 cout<<"\nPo sortowaniu: \n\n";
 for(i=0;i<r;i++)
 cout<<a[i]<<'\t';
 cout<<endl;
 
 cout<<"\nTablica posortowana w czasie: "<<diff<<" sekund\n";
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Słowniczek pojęć:

To rekurencyjny algorytm sortowania danych, stosujący metodę dziel i zwyciężaj. Odkrycie algorytmu przypisuje się Johnowi von Neumannowi.