Hyluss icon

Sortowanie szybkie_poprawa

Hyluss | PRO | 04/12/16 09:39:02 PM UTC | 0 ⭐ | 454 👁️ | Never ⏰ | []
C |

1.58 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>
 
 
int LICZNIK=0;
 
void szybkiesortowanie (int* tab, int ile)
{
    int pivot;
    int gdziepivot;
 
    LICZNIK++;
 
    gdziepivot =  (ile) / 2 ;
 
    int p=ile-1;
    int l=0;
    int pamietaj;
 
    pivot = tab[gdziepivot];
 
    while (1)
    {
 
        while  ( tab[l] < pivot )
        {
            l++;
        }
 
        while  ( tab[p] > pivot )  
        {
            p--;        
        }
 
        if (l <= p) 
        {
            pamietaj = tab[p];
            tab[p] = tab[l];
            tab[l] = pamietaj;
            l++; 
            p--; 
        }
        else
        {
            break;
        }
 
    }
    if (p > 0) 
    {
        szybkiesortowanie (tab, p+1);
    }
    if (l < ile-1)
    {
        szybkiesortowanie ((int *)&tab[l], ile-l);      
    }
 
    LICZNIK--;
} 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int ile;
    int* tablica;
 
    srand (time(NULL));
 
    printf ("ile liczb?\n");
    scanf ("%d",&ile);
 
    tablica = (int*) malloc (sizeof (int) * ile);
    while (1)
    {
        puts("liczby\n");
        for (int i=0; i<ile;i++)
        {
            tablica[i] = (rand() % 200) - 100;
        }
 
/*
tablica[0] = 17;
tablica[1] = 58;
tablica[2] = 4;
tablica[3] = 37;
tablica[4] = 3;
tablica[5] = 87;
tablica[6] = 70;
tablica[7] = 5;
tablica[8] = 68;
tablica[9] = 97;
*/
 
        for (int i=0; i<ile;i++)
        {
            printf ("tab[%d] = %d\n",i,tablica[i]);
        }
 
        puts ("\n");
        szybkiesortowanie ( tablica, ile);
        puts("posortowane\n");
        for (int i=0; i<ile;i++)
        {
            printf ("tab[%d] = %d\n",i,tablica[i]);
        }
        puts ("\n");
 
        _getch();
    }
    return 0;
}

Comments

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

    0 B

    |

    👍

    /

    👎