Sortowanie przez scalanie
Kod był wyświetlany 1398 razy.
    /*
  Name: Sortowanie przez scalanie 
  Copyright: GPL GNU

  Date: 09-08-2007 17:22:47
  Description: 
*/

#include <iostream>
#include <conio.h>
using namespace std;
void Scal(int tab[],int p, int q, int k)
{
	int dlugosc1=q-p+2, dlugosc2=k-q+1;
	int *L=new int[dlugosc1],*P=new int[dlugosc2];
	for(int i=0;i<dlugosc1-1;i++)
		L[i]=tab[p+i];
	for(int i=0;i<dlugosc2-1;i++)
		P[i]=tab[q+i+1];
	L[dlugosc1-1]=P[dlugosc2-1]=32000;
	int a=0,b=0;
	for(int i=p;i<=k;i++)
		if(L[a]<P[b])
			tab[i]=L[a++];
		else
			tab[i]=P[b++];
}
void Sortuj(int tab[], int p, int k)
{
	if(p<k)
	{
		int q=(k+p)/2;
		Sortuj(tab,p,q);
		Sortuj(tab,q+1,k);
		Scal(tab,p,q,k);
	}
}
int main()
{
	cout<<"Ile liczb? ";
	int n;
	cin>>n;
	int *tablica=new int[n];
	cout<<"Podaj liczby: ";
	for(int i=0;i<n;i++)
		cin>>tablica[i];
	Sortuj(tablica,0,n-1);
	for(int i=0;i<n;i++)
		cout<<tablica[i]<<" ";
	getch();
	return 0;
}
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT