Skip to content

Основни алгоритми са низовима

Инвертовање низа

Инвертовање низа A користећи помоћни низ B (лоше решење, јер нема потребе користити помоћни низ):

    int A[] = { 3, -9, 1, 5, 0, 8, -2 }, B[7], n = 7;

    for (int i = 0; i < n; i++) // upis invertovanih u B
        B[i] = A[n - 1 - i];
    for (int i = 0; i < n; i++) // kopiranje iz B u A
        A[i] = B[i];

    for (int i = 0; i < n; i++) // ispis invertovanog niza A
        printf("%d ", A[i]);

Инвертовање низа A без коришћења помоћног низа:

    int A[] = { 3, -9, 1, 5, 0, 8, -2 }, n = 7;

    for (int i = 0; i < n / 2; i++)   // zamena prvog i poslednjeg
    {                                 // drugog i pretposlednjeg
        int temp = A[i];              // itd, sve dok se ne dodje do
        A[i] = A[n - 1 - i];          // sredine niza
        A[n - 1 - i] = temp;
    }

    for (int i = 0; i < n; i++) // ispis invertovanog niza A
        printf("%d ", A[i]);

Ротирање низа

Ротирање низа за X места у лево.

    int A[] = { 3, -9, 1, 5, 0, 8, -2 }, n = 7, X = 2;

    for (int i = 0; i < X; i++)     // rotiranje niza A za X mesta
    {                               // u levo
        int temp = A[0];
        for (int j = 1; j < n; j++)
            A[j - 1] = A[j];
        A[n - 1] = temp;
    }

    for (int i = 0; i < n; i++) // ispis niza A
        printf("%d ", A[i]);

…односно за X места у десно:

    int A[] = { 3, -9, 1, 5, 0, 8, -2 }, n = 7, X = 2;

    for (int i = 0; i < X; i++)
    {     
        int temp = A[n - 1];
        for (int j = n - 1; j > 0; j--)
            A[j] = A[j - 1];
        A[0] = temp;
    }

    for (int i = 0; i < n; i++) // ispis niza A
        printf("%d ", A[i]);