algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Szukanie połówkowe (binarne) - Implementacja w C/C++
Ocena użytkownikóww: *****  / 12
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 04 września 2009 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Szukanie_polowkowe.c:
//Szukanie polowkowe (binarne)
//uwaga: elementy tablicy w C numerowane sa od 0
//       zatem nasza tablica ma indeksy od 0 do n-1
//       a[0], a[1], ..., a[n-1]
//(c) 2009 by Tomasz Lubinski
//www.algorytm.org

#include "stdio.h"

void main(void)
{
   int i, n, x, l, p, s;
   int a[100];
		
   //pobierz dane od uzytkownika
   printf("Podaj liczbe elementow tablicy (max. 100)\n");
   scanf("%d", &n);
   for (i=0; i<n; i++) 
   {
      printf("Podaj element a[%d]\n", i);
      scanf("%d", &a[i]);
   }
   printf("Podaj element do wyszukania\n");
   scanf("%d", &x);
	
   //szukaj elementu x
   l = 0;
   p = n - 1;
   while (l <= p) 
   {
      s = (l + p) / 2;
			
      if (a[s] == x) 
      {
         //podaj wynik
         printf("Odnaleziono element %d pod indeksem %d\n", x, s);
         //zakoncz program
         return;
      }

      if (a[s] < x)
         l = s + 1;
      else
         p = s - 1;		
   }
		  
   //podaj wynik
   printf("Nie odnaleziono w tablicy elementu %d\n", x);
}
Komentarze
photo
0 # elektron 2017-11-04 13:44
to wpiszcie tak

4
6 8 4 2
4

Pozdrawiam
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Tomasz Lubiński 2019-11-12 14:31
Program dla podanych wartości nie zadziała poprawnie gdyż nie jest spełniony warunek wyszukiwania połówkowego - tablica danych do wyszukania musi być posortowana.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz