Γλώσσα C ~δυαδική αναζήτηση ~

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
diamadiss
Δημοσιεύσεις: 28
Εγγραφή: 16 Μάιος 2008 21:52

Γλώσσα C ~δυαδική αναζήτηση ~

Δημοσίευση από diamadiss » 09 Νοέμ 2008 12:06

Παιδιά γειά. Θα ήθελα μια βοήθεια σε ενα πρόγραμμα. Αυτό που θέλω να κάνω είναι το εξής :
Να γραφεί πρόγραμμα σε C που να αναζητεί με τον αλγόριθμο της δυαδικής αναζήτησης το στοιχείο 3 και το στοιχείο 14 στον ακόλουθο πίνακα Α=[1 3 4 7 10 13 22 28]. Τέλος, να εκτυπώνονται οι συγκρίσεις που έγιναν με την δυαδική αναζήτηση για να βρεθεί το στοιχείο 3 και 4 αντίστοιχα. Το εχω φτιάξει το πρόγραμμα αλλά με τον αλγόριθμο της σειριακής αναζήτησης . Μήπως μπορεί να με βοηθήσει κάποιος να ξεκολήσω? Ευχαριστώ.

Πρόγραμμα με την μέθοδο της σειριακής αναζήτησης΄

Κώδικας: Επιλογή όλων

#include <stdio.h>
main&#40;&#41;
&#123;
int A&#91;8&#93;,i,found=0,value1=3,value2=14;
A&#91;0&#93;=1,A&#91;1&#93;=3,A&#91;2&#93;=4,A&#91;3&#93;=7,A&#91;4&#93;=10,A&#91;5&#93;=13,A&#91;6&#93;=22,A&#91;7&#93;=28;
i=0;
while&#40;&#40;i<8&#41;&&&#40;found==0&#41;&#41;
		&#123;
			printf&#40;"~Is equal %d with %d?\n",value1,A&#91;i&#93;&#41;;
			if&#40;A&#91;i&#93;==value1&#41;
				found=1;
			else
				i=i+1;
		&#125;
	if&#40;found==1&#41;
		printf&#40;"~The number %d found\n",value1&#41;;
	else
		printf&#40;"~The %d not found!!!\n",value1&#41;;
	found=i=0;
	printf&#40;"\n\n\n"&#41;;
	while&#40;&#40;i<8&#41;&&&#40;found==0&#41;&#41;
		&#123;
			printf&#40;"~Is equal %d with %d?\n",value2,A&#91;i&#93;&#41;;
			if&#40;A&#91;i&#93;==value2&#41;
				found=1;
			else
				i=i+1;
		&#125;
	if&#40;found==1&#41;
		printf&#40;"\n\n\n~The number %d found\n",value2&#41;;
	else
		printf&#40;"~\n\n\nThe number %d not found!!!\n",value2&#41;;
	printf&#40;"\n\n\n"&#41;;
&#125;
	

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Γλώσσα C ~δυαδική αναζήτηση ~

Δημοσίευση από soteres2002 » 09 Νοέμ 2008 16:07

Η βέλτιστη μέθοδος της Δυαδικής Αναζήτησης (προσέγγιση divide and conquer τάξης O(lgn)) είναι πολύ απλή και βασική όσο και η σειριακή, άρα είναι πανεύκολο να μεταφέρεις την υπάρχουσα λογική σε αυτό τον αλγόριθμο. Περιγράφεται εδώ http://en.wikipedia.org/wiki/Binary_search μαζί με χρήσιμες πληροφορίες (ασυμπτωτική ανάλυση / μέσης περίπτωσης, και δείγματα κώδικα). Άρα η απάντηση βρίσκεται εκεί...

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες