Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- int[] tab1 = { 1, 3, 5, 7, 9 };
- int[] odp1 = Algorytm(tab1, 4, 0, 4);
- for (int i = 0; i <= 10; i++)
- {
- odp1 = Algorytm(tab1, i, 0, 4);
- Console.WriteLine(i + ": (" + odp1[0] + " " + odp1[1]+"]");
- }
- Console.ReadKey();
- }
- static int[] Algorytm(int[] tab, int x,int l, int p)
- {
- int[] przedzial = new int[2];
- if(x <= tab[0])
- {
- przedzial[0] = x;// tab[0];
- przedzial[1] = tab[0];
- return przedzial;
- }
- else if(x > tab[tab.Length-1])
- {
- przedzial[0] = tab[tab.Length - 1];
- przedzial[1] = x;// tab[tab.Length - 1];
- return przedzial;
- }
- if(p == l)
- {
- if(x <= tab[p])
- {
- przedzial[0] = tab[p-1];
- przedzial[1] = tab[p];
- return przedzial;
- }
- else
- {
- przedzial[0] = tab[p];
- przedzial[1] = tab[p+1];
- return przedzial;
- }
- }
- int s = (l + p) / 2;
- if(x <= tab[s])
- {
- return Algorytm(tab, x, l, s);
- }
- else
- {
- return Algorytm(tab, x, s + 1, p);
- }
- }
- static int Znajdz(int[] tab, int szukana, int pocz, int kon)
- {
- if (pocz == kon)
- {
- if (tab[pocz] == szukana && pocz != 0)
- return pocz;
- if (szukana > tab[pocz])
- return -2;
- return -1; //dlatego, że liczba albo jest na [0] albo jej wgl nie ma, jest mniejsza od najmniejszej liczby w tablicy 🙂
- }
- int mid = (pocz + kon) / 2;
- if (szukana == tab[mid])
- return mid;
- if (szukana > tab[mid])
- return Znajdz(tab, szukana, mid + 1, kon);
- //if (szukana < tab[mid])
- return Znajdz(tab, szukana, pocz, mid - 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement