Μάθημα : Προγραμματισμός Η/Υ
Κωδικός : T522234
-
Εμφάνιση όλων των ενοτήτων
-
Τύποι δεδομένων
-
Πράξεις και εκφράσεις (αριθμητικές και λογικές)
-
Μεταβλητές
-
Βασικές (ενσωματωμένες) συναρτήσεις -Βιβλιοθήκες συναρτήσεων
-
Δομή προγράμματος και καλές πρακτικές
-
Τύποι και δομές δεδομένων στις γλώσσες προγραμματισμού
-
Δομή ακολουθίας
-
Αλγοριθμικές δομές (if, for, while)
-
Αλγοριθμικές δομές (Θέματα)
-
Δυαδική αναζήτηση
-
Ταξινόμηση Ευθείας ανταλλαγής
-
Διαχείριση Αρχείων
-
Υποπρογράμματα, Συναρτήσεις
-
Αρθρώματα (Modules)
-
Συμβολοσειρές (strings)
-
Λίστες
-
Στοίβα
-
Ουρά
-
Αντικειμενοστρεφής Προγραμματισμός
-
Θέματα προηγουμένων χρόνων
-
Tips & Tricks
-
Module random
-
Module math
-
Θέματα 2022-23
-
Θέματα 2023-24
-
Η ΑΙ λύνει τα θέματα
-
Τύποι δεδομένων
Δυαδική αναζήτηση
Αλγόριθμος Δυαδικής αναζήτησης
Προσοχή ο αλγόριθμος λειτουργεί σε ταξινομημένα δεδομένα
#1η συνάρτηση
συνάρτηση που επιστρέφει True όταν το στοιχείο υπάρχει στη λίστα διαφορετικα επιστρέφει False
def binarySearch(lista,kleidi):
proto=0
teleytaio=len(lista)-1
vrethike= False
while proto<=teleytaio and not vrethike :
mesaio=(proto+teleytaio) / 2
if lista[mesaio]==kleidi:
vrethike= True
elif lista[mesaio]<kleidi:
proto= mesaio+1
else :
teleytaio = mesaio-1
return vrethike
#2η συνάρτηση
συνάρτηση που επιστρέφει τη θέση που βρίσκεται το στοιχείο στη λίστα διαφορετικα επιστρέφει -1
def binarySearchThesi(lista,kleidi):
proto=0
teleytaio=len(lista)-1
thesi=-1
while proto<=teleytaio and thesi==-1 :
mesaio=(proto+teleytaio) / 2
if lista[mesaio]==kleidi:
thesi= mesaio
elif lista[mesaio]<kleidi:
proto= mesaio+1
else :
teleytaio = mesaio-1
return thesi
Παράδειγμα
def binarySearchThesi(lista,kleidi):
proto=0
teleytaio=len(lista)-1
thesi=-1
while proto<=teleytaio and thesi==-1 :
mesaio=(proto+teleytaio) / 2
if lista[mesaio]==kleidi:
thesi= mesaio
elif lista[mesaio]<kleidi:
proto= mesaio+1
else :
teleytaio = mesaio-1
return thesi
#-----------------------------------------------------------------
a=range(1,100,7) #δημιουργια της λιστας
ar=input('dose arithmo ')
print 'Thesi ', binarySearchThesi(a,ar)
print a
B2.
Δίνεται παρακάτω η λίστα Α.
| Α: | |||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 1 | 1 | 2 | 3 | 5 | 6 | 13 | 21 | 34 | 55 | 89 | 94 | 96 | 99 |
Να γράψετε στο τετράδιό σας τους αριθμούς της λίστας που θα συγκριθούν κατά την εκτέλεση του αλγορίθμου της δυαδικής αναζήτησης σε κάθε μία από τις παρακάτω περιπτώσεις:
α) για τον αριθμό 100 (μον. 4)
β) για τον αριθμό 1 (μον. 3)
Μονάδες 7
(ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2018)
Β1.
Δίνεται ο παρακάτω αλγόριθμος της δυαδικής αναζήτησης που εφαρμόζεται σε λίστα, της οποίας τα στοιχεία είναι διατεταγμένα σε φθίνουσα σειρά.
def binarySearch(array, key):
first = 0
last = (1)
pos = -1
while first <= (2) and pos == (3) :
mid = (first + last)/2
if array[mid] == key:
(4) = mid
elif array[mid] < key:
(5) = mid – 1
else:
(6) = (7)
return (8)
Στο τμήμα προγράμματος υπάρχουν οκτώ (8) κενά, τα οποία έχουν αριθμηθεί και υπογραμμιστεί. Να γράψετε στο τετράδιό σας τον αριθμό του κενού και δίπλα τι πρέπει να συμπληρωθεί, ώστε το τμήμα προγράμματος να εκτελεί σωστά τη λειτουργία του.
Μονάδες 8
(ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2020)
import random
def binarySearchThesi(lista,kleidi):
proto=0
teleytaio=len(lista)-1
thesi=-1
while proto<=teleytaio and thesi==-1 :
mesaio=(proto+teleytaio) / 2
if lista[mesaio]==kleidi:
thesi= mesaio
elif lista[mesaio]<kleidi:
proto= mesaio+1
else :
teleytaio = mesaio-1
return thesi
def bubbleSort(A):
N=len(A)
for i in range(N-1):#καθορίζει πόσα "περάσματα" θα γίνουν
for j in range(N-1, i, -1):
if A[ j ] < A[ j-1 ] :
A[ j ], A[ j-1 ] = A[ j-1 ], A[ j ]
#Κυριως προγραμμα
lista=[]#αρχικοποιήση
for i in range(200):
lista+=[random.randint(1000,9999)]
#προσθετει ένα τυχαιο αριθμο στη λιστα
print lista
print 'Taxinomimei'
bubbleSort(lista)
print lista
psahno=input ('ποιον αριθμό ψάχνεις ')
if binarySearchThesi(lista,psahno)!=-1:
print 'θεση:',binarySearchThesi(lista,psahno)
else:
print 'δεν υπαρχει!!!!'