Program
W pierwszej kolejności należy się zająć częścią programu odpowiedzialną za sortowanie liczb. Ja wykorzystałem algorytm sortowania bąbelkowego. Jest to jedna z prostszych metod sortowania. Działa ona dosyć dobrze na małych zbiorach, przy większych zbiorach raczej sobie nie poradzi za dobrze.
Dane w czasie sortowania są przemieszczają się w prawą stronę, czyli ku ostatniemu elementowi w tablicy. Ich miejsce zajmują elementy o mniejszej wartości. Algorytm jest powtarzany dla każdej z liczb z pominięciem licz które zostały już posortowane. Całość jest powtarzana aż do momentu ich poprawnego ułożenia.
- void sortowanie(int tab[],int n)
- {
- for(int i=0;i<n;i++)
- {
- for(int j=1;j<n-i;j++)
- {
- if(tab[j-1]>tab[j])
- {
- //Zamiana elementow miejscami
- swap(tab[j-1], tab[j]);
- }
- }
- }
- }
Poniżej wklejam pełny kod programu wraz z komentarzem:
- #include <iostream>
- #include<cstdlib>
- #define TabEle 16
- using namespace std;
- int wyszukaj(int tabl[], int x, int left, int right);
- void sortowanie(int tab[],int n);
- int main()
- {
- //Deklaracja tablicy
- int tabl[TabEle]={2,1,15,34,20,29,45,32,18,39,21,71,43,47,11,9};
- const int Szuk1 = 45;
- const int Szuk2 = 38;
- //Wypisanie i wyświetlenie wyszukanych cyfr
- for(int i=0; i<TabEle; i++)
- {
- cout << tabl[i] << " ";
- }
- //Przejscie do nowej linii
- cout << endl;
- sortowanie(tabl, TabEle);
- for(int i=0; i<TabEle; i++)
- {
- cout << tabl[i] << " ";
- }
- cout << endl;
- //Przeszukiwanie tablicy, wyszukanie miejsc na jakiej znajduja sie elementy
- //Jesli elementu nie ma w tablicy to wyswietli wartosc -1
- cout << "Wyszukaj liczbe "<< Szuk1 << ", jej pozycja to: " << wyszukaj(tabl,Szuk1, 0, 16)<<endl;
- if(wyszukaj(tabl, 3,0,16)>-1)
- {
- cout << "Wyszukaj liczbe " << Szuk2 << ", jej pozycja to: " << wyszukaj(tabl, Szuk2, 0, 16);
- }
- else
- {
- cout << "Nie znaleziono szukanej liczby" << endl;
- }
- return 0;
- }
- int wyszukaj(int tabl[], int x, int left, int right)
- {
- if(left>right)
- {
- //Jesli nie znajdzie elementu, wtedy zwrocona bedzie wartosc -1
- return -1;
- }
- else
- {
- //Przypisanie zmiennej srodek wartosci rownej polowie liczby elementow
- int srodek=(left+right)/2;
- //Sprawdzenie czy wartosc srodkowa jest szukanym elementem
- if(tabl[srodek]==x)
- {
- //Jesli znajdzie element wtedy zwraca jego pozycje
- return srodek;
- }
- else
- {
- //Sprawdzenie wartosci elementu
- if(x<tabl[srodek])
- {
- //Wejscie do funkcji wyszukiwania w strone nizszej pozycji
- return wyszukaj(tabl,x,left,srodek-1);
- }
- else
- {
- //Wyjscie do funkcji wyszukiwania w strone wyzszej pozycji
- return wyszukaj(tabl,x,srodek+1,right);
- }
- }
- }
- }
- void sortowanie(int tab[],int n)
- {
- for(int i=0;i<n;i++)
- {
- for(int j=1;j<n-i;j++)
- {
- if(tab[j-1]>tab[j])
- {
- //Zamiana elementow miejscami
- swap(tab[j-1], tab[j]);
- }
- }
- }
- }
W pierwszej kolejności deklarowana jest tablica elementów oraz zmienne. Następnie wyświetlana jest aktualna tablica liczb, która w kolejnych krokach jest sortowana. Funkcja wyszukiwania zadanej wartości przechodzi po kolejnych jej elementach do momentu odnalezienia zadanej wartości.