Линеарно претраживање низа
Провера да ли се одређена вредност налази у низу.
На пример, на којој позицији се у низу A[] = { 3, -9, 1, 5, 0, 8, -2 }
налази вредност 5
…
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
for (int i = 0; i < n; i++)
if (A[i] == 5)
printf("Nalazi se na poziciji %d", i);
или, колико елемената у низу A[] = { 5, -9, 1, 5, 0, 5, -2 }
има вредност 5
:
int A[] = { 5, -9, 1, 5, 0, 5, -2 };
int n = sizeof(A) / sizeof(A[0]);
int br = 0;
for (int i = 0; i < n; i++)
if (A[i] == 5)
br++;
printf("U nizu A ukupno %d elemenata ima vrednost 5", br);
Одређивање минимума и максимума
Који елемент у низу A[] = { 3, -9, 1, 5, 0, 8, -2 }
има најнижу вредност и на којој се позицији налази…
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
int min = A[0], ind = 0;
for (int i = 1; i < n; i++)
if (A[i] < min)
{
min = A[i];
ind = i;
}
printf("A[%d] = %d", ind, min);
…а који највишу?
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
int max = A[0], ind = 0;
for (int i = 1; i < n; i++)
if (A[i] > max)
{
max = A[i];
ind = i;
}
printf("A[%d] = %d", ind, max);
Бинарно претраживање низа
Провера да ли се одређена вредност налази у сортираном низу.
На којој позицији се вредност 5
налази у сортираном низу A[] = { -2, 0, 1, 4, 5, 8, 9 }.
int A[] = { -2, 0, 1, 4, 5, 8, 9 };
int n = sizeof(A) / sizeof(A[0]);
int levo = 0, desno = n - 1;
while (levo <= desno)
{
int sredina = (levo + desno) / 2;
if (A[sredina] == 5)
{
printf("Nalazi se na poziciji %d", sredina);
return 0;
}
if (A[sredina] < 5)
levo = sredina + 1;
else
desno = sredina - 1;
}
Инвертовање низа
Замена елемената низа тако да први постане последњи, други претпоследњи и тако редом.
Инвертовање низа A користећи помоћни низ B (лоше решење, јер нема потребе користити помоћни низ):
int A[] = { 3, -9, 1, 5, 0, 8, -2 }, B[7];
int n = sizeof(A) / sizeof(A[0]);
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];
Инвертовање низа A без коришћења помоћног низа:
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
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;
}
Ротирање низа
Померање елемената низа за одређен број места улево или удесно.
Ротирање низа A[] = { 3, -9, 1, 5, 0, 8, -2 }
за два места у лево…
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
for (int i = 0; i < 2; i++) // rotiranje niza A za 2 mesta
{ // u levo
int temp = A[0];
for (int j = 1; j < n; j++)
A[j - 1] = A[j];
A[n - 1] = temp;
}
…односно за X места у десно:
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
for (int i = 0; i < 2; i++)
{
int temp = A[n - 1];
for (int j = n - 1; j > 0; j--)
A[j] = A[j - 1];
A[0] = temp;
}
Сажимање
Избацивање елемената из низа.
На пример, избаци елемент A[3]
из низа A[] = { 3, -9, 1, 5, 0, 8, -2 }
:
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
for (int i = 3; i < n - 1; i++) {
A[i] = A[i + 1];
}
n--;
Избаци из низа A[] = { 3, -9, 1, 5, 0, 8, -2 }
први елемент који има вредност 5
:
int A[] = { 3, -9, 1, 5, 0, 8, -2 };
int n = sizeof(A) / sizeof(A[0]);
int indeks = -1;
for (int i = 0; i < n; i++) // Pronalazi se prvi element
if (A[i] == 5) // sa indeksom 5
{
indeks = i;
break;
}
if (indeks != -1) // Ako je indeks pronadjen
{ // izbacuje se iz niza
for (int i = indeks; i < n - 1; i++)
A[i] = A[i + 1];
n--;
}
Избаци из низа A[] = { 5, -9, 1, 5, 0, 5, -2 }
све елементе који имају вредност 5
:
int A[] = { 5, -9, 1, 5, 0, 5, -2 };
int n = sizeof(A) / sizeof(A[0]);
int velicina = 0;
for (int i = 0; i < n; i++)
if (A[i] != 5) // Kopiraju se svi elementi
{ // koji su razliciti od 5
A[velicina] = A[i];
velicina++;
}
n = velicina;
Проширивање (експандовање) низа
Уметање нових чланова у низ.
На позицију 3
у низ A[] = { 3, -9, 1, 5, 0, 8, -2 }
уметни елемент који има вредност 100
:
int A[8] = { 3, -9, 1, 5, 0, 8, -2 };
int n = 7;
for (int i = n; i > 3; i--)
A[i] = A[i - 1];
A[3] = 100;
n++;