Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

C /

ismertebb rendezési algoritmusok

#############################

Beszúrásos rendezés

void beszurasos_rendezes(int tomb[], int meret)
{
    int i, j, temp, x;

    fprintf(stderr, "# beszurasos rendezes\n");

    for (i = 1; i < meret; ++i)
    {
        x = tomb[i];    /* aktuális elem */

        /* x beszúrása az x előtti rendezett sorozatba */
        j = i - 1;
        while ((j >= 0) && (tomb[j] > x))
        {
            tomb[j+1] = tomb[j];
            --j;
        }
        tomb[j+1] = x;
    }
}

Egyszerű kiválasztásos rendezés

Ezt a legegyszerűbb megjegyezni (de ez a leglassabb is).

void egyszeru_kivalasztasos_rendezes(int tomb[], int meret)
{
    int i, j, temp;

    fprintf(stderr, "# egyszeru kivalasztasos rendezes\n");

    for (i = 0; i < meret - 1; ++i)
    {
        for (j = i + 1; j < meret; ++j)
        {
            if (tomb[j] < tomb[i])
            {
                temp = tomb[i];
                tomb[i] = tomb[j];
                tomb[j] = temp;
            }
        }
    }
}

Minimumkiválasztásos rendezés

void minimumkivalasztasos_rendezes(int tomb[], int meret)
{
    int i, j, temp;
    int minindex;

    fprintf(stderr, "# minimumkivalasztasos rendezes\n");

    for (i = 0; i < meret - 1; ++i)
    {
        minindex = i;
        for (j = i + 1; j < meret; ++j)
        {
            if (tomb[j] < tomb[minindex]) {
                minindex = j;
            }
        }
        if (i != minindex)
        {
            temp = tomb[i];
            tomb[i] = tomb[minindex];
            tomb[minindex] = temp;
        }
    }
}

Buborékrendezés

void buborek_rendezes(int tomb[], int meret)
{
    int i, j, temp;

    fprintf(stderr, "# (egyszeru) buborekrendezes\n");

    for (i = meret - 1; i >= 1; --i)
    {
        for (j = 0; j < i; ++j)
        {
            if (tomb[j] > tomb[j+1])
            {
                temp = tomb[j];
                tomb[j] = tomb[j+1];
                tomb[j+1] = temp;
            }
        }
    }
}

Javított buborékrendezés

void javitott_buborek_rendezes(int tomb[], int meret)
{
    int volt_csere = 1;
    int i = meret - 1;
    int j;
    int temp;

    fprintf(stderr, "# javitott buborekrendezes\n");

    while (volt_csere && i >= 0)
    {
        volt_csere = 0;
        j = 0;
        while (j < i)
        {
            if (tomb[j] > tomb[j+1])
            {
                temp = tomb[j];
                tomb[j] = tomb[j+1];
                tomb[j+1] = temp;
                /* */
                volt_csere = 1;
            }
            ++j;
        }
        --i;
    }
}

A) Shell-rendezés Shell lépésközeivel

/* with Shell's original gap sizes */
void shell_sort_shell(int a[], int n)
{
    int g, i, temp, j;
    int gap;

    fprintf(stderr, "# Shell rendezes (Shell eredeti lepeskozeivel)\n");

    for (gap = n / 2; gap >= 1; gap /= 2)
    {
        /* do an insertion sort for each gap size */
        i = gap;
        while (i < n)
        {
            temp = a[i];
            j = i;
            while ((j >= gap) && (a[j - gap] > temp))
            {
                a[j] = a[j - gap];
                j -= gap;
            }
            a[j] = temp;
            ++i;
        }
    }
}

B) Shell-rendezés Ciura lépésközeivel

/* with Ciura's gaps */
void shell_sort_ciura(int a[], int n)
{
    int gaps[] = {701, 301, 132, 57, 23, 10, 4, 1};
    int gap_size = sizeof(gaps) / sizeof(int);
    int g, gap, i, temp, j;

    fprintf(stderr, "# Shell rendezes (Ciura lepeskozeivel)\n");

    for (g = 0; g < gap_size; g++)
    {
        gap = gaps[g];

        /* do an insertion sort for each gap size */
        i = gap;
        while (i < n)
        {
            temp = a[i];
            j = i;
            while ((j >= gap) && (a[j - gap] > temp))
            {
                a[j] = a[j - gap];
                j -= gap;
            }
            a[j] = temp;
            ++i;
        }
    }
}

Gyorsrendezés (quicksort)

void quicksort(int a[], int bal, int jobb)
{
    int x, temp;
    int i, j;

    i = bal;
    j = jobb;
    x = a[(bal + jobb) / 2];
    while (i <= j)
    {
        while (a[i] < x) ++i;
        while (a[j] > x) --j;
        if (i <= j)
        {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            /* */
            ++i;
            --j;
        }
    }

    if (bal < j)  quicksort(a, bal, j);
    if (i < jobb) quicksort(a, i, jobb);
}
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2015 May 09, 08:41