Hyluss icon

Sortowanie szybkie

Hyluss | PRO | 04/12/16 07:29:25 PM UTC | 0 ⭐ | 486 👁️ | Never ⏰ | []
C |

1.9 KB

|

None

|

0 👍

/

0 👎

// sortowanieszybkie.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <conio.h>
#include <malloc.h>
#include <ctime>
#include <cstdlib>
 
 
 
 
void szybkiesortowanie (int* tab, int ile)
{
int pivot;
int gdziepivot;
int LICZNIK=0;  
LICZNIK++;
 
gdziepivot =  (ile) / 2 ;
    //  printf ("[%d] - %d",pivot, tab[pivot]);
 
int p=ile-1;
int l=0;
int pamietaj;
 
 
 
puts ("\n\n\n");
 
pivot = tab[gdziepivot];
 
while (1)
{
 
    while ( ( tab[l] < pivot )  )
    {
        //printf ("tab[%d] -",l);
        //printf ("%d\n",tab[l]);
        l++;
    }
 
    while ( ( tab[p] > pivot )  )
    {
    //  printf ("tab[%d] -",p);
    //  printf ("%d\n",tab[p]);
        p--;        
    }
 
    if (l < p)
    {
        pamietaj = tab[p];
        tab[p] = tab[l];
        tab[l] = pamietaj;
 
        if (l==gdziepivot) 
        {   
            gdziepivot = p;
        }
        else
        {
            if (p==gdziepivot)
            {
                gdziepivot=l;
            }
        }
         l++; //
         p--; //?
    }
    if (l>=p)
    {
    break;
    }
 
}
 
 
    if ( (gdziepivot>0) && (ile!=1 ))
    {
        szybkiesortowanie (tab, gdziepivot);
    }
    if ( (gdziepivot<ile-1) && (ile!=1 ))
    {
        szybkiesortowanie ((int *)&tab[gdziepivot+1], ile-1-gdziepivot);        
    }
 
 
for (int i=0; i<ile;i++)
    {
        printf ("tab[%d] = %d\n",i,tab[i]);
    }
puts ("\n");
 
    
    //break;
LICZNIK--;
} 
 
 
 
 
 
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
int ile;
int* tablica;
int LICZNIK;
 
 
srand (time(NULL));
/*
printf ("ile liczb?\n");
scanf ("%d",&ile);
*/
 
    ile = 8;
 
    tablica = (int*) malloc (sizeof (int) * ile);
/*  for (int i=0; i<ile;i++)
    {
        tab[i] = rand() %100;
    }
*/
tablica[0] = 5;
tablica[1] = 3;
tablica[2] = 0;
tablica[3] = 2;
tablica[4] = 4;
tablica[5] = 1;
tablica[6] = 7;
tablica[7] = 3;
 
    for (int i=0; i<ile;i++)
    {
        printf ("tab[%d] = %d\n",i,tablica[i]);
    }
 
 
szybkiesortowanie ( tablica, ile);
    
puts ("\n");
 
/////////////////////   
    
 
    _getch();
    return 0;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎