Κεφάλαιο 5 - Βιβλίο-Τετράδιο Εργασιών Μαθητή

You got 10 of 20 possible points.
Your score: 50%
Question 1

Σε μια ταξινομημένη λίστα 16 στοιχείων, πόσες είναι οι περισσότερες συγκρίσεις που θα χρειαζόταν για να βρεθεί οποιοδήποτε στοιχείο χρησιμοποιοώντας τη δυαδική αναζήτηση;

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

2

0

8

0

16

0
Selected

4

1
Should have chosen
Question 2

Δίνεται η λίστα με τους αριθμούς [60, 38, 98, 54, 32, 90, 20] . Πως θα γίνει η λίστα μετά από 3 περάσματα μιας αύξουσας ταξινόμησης;

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

1ο πέρασμα: [20, 60, 38, 98, 54, 32, 90]

2ο πέρασμα: [20, 32, 60, 38, 98, 54, 90]

3ο πέρασμα: [20, 32, 38, 60, 98, 54, 90]

0

1ο πέρασμα: [20, 60, 38, 98, 54, 32, 90]

2ο πέρασμα: [20, 32, 60, 38, 98, 54, 90]

3ο πέρασμα: [20, 32, 38, 60, 90, 54, 98]

0
Selected

1ο πέρασμα: [20, 60, 38, 98, 54, 32, 90]

2ο πέρασμα: [20, 32, 60, 38, 98, 54, 90]

3ο πέρασμα: [20, 32, 38, 60, 54, 98, 90]

1
Should have chosen
Question 3

Ο παρακάτω αλγόριθμος δυαδικής αναζήτησης χρησιμοποιείται σε λίστες με αύξουσα ταξινόμηση:

def binarySearch(lista, key):

        first = 0

        last = len(lista) - 1

        found = False

        while not found and first <= last:

                mid = (first + last) / 2

                if  key == lista[mid] :

                      found = True

                elif key <lista[mid]  :

                      last = mid - 1

                else:

                    first  = mid +1

        return found

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
True0
Should have chosen
Selected
False0
Question 4

Ο παρακάτω αλγόριθμος επιλέγει έναν αριθμό από το 1 έως και το 1000 και ο χρήστης προσπαθεί να τον μαντέψει με τη βοήθεια μηνυμάτων από το Η/Υ (αν ο αριθμός που έδωσε ο χρήστης είναι μικρότερος ή μεγαλύτερος). Βελτιώστε τον αλγόριθμο στην  while ώστε ο χρήστης να σκεφτεί με καλύτερη στρατηγική και να μειώσει τις προσπάθειές του για να βρει τον κρυφό αριθμό. Οι προσπάθειες που θα μπορεί να δώσει είναι 10

import random

secret_number = random.randint(1, 1000)  # ο αριθμός που επιλέγει τυχαίο ο Η/Υ

guesses = 0   #προσπάθειες

found = False

while not found:

        guess = input(' Μάντεψε τον αριθμό')  # Ο αριθμός που δίνει ο χρήστης

        guesses + = 1

        if guess == secret_number:

                print 'Μπράβο το βρήκες με', guesses, 'προσπάθειες'

                found = True

        else:

                if guess < secrtet_number:

                        print ' Ο αριθμός σου είναι μικρότερος από τον ζητούμενο'

                else:

                        print ' Ο αριθμός σου είναι μεγαλύτερος από τον ζητούμενο'  

#Τέλος της while

if  found :  # αφού αν είναι True αρκεί (μπορούμε και found == True:)

        print 'Μπράβο το βρήκες με ', guesses, ' προσπάθειες'

else:

        print 'Δυστυχώς δεν το βρήκες'

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

while not found and guesses < 10:

0
Should have chosen

while not found or guesses > 10:

0
Selected

while not found and guesses > 10:

0

while not found or guesses < 10:

0
Question 5

Η αντιμετάθεση (αμοιβαία αλλαγή τιμών των μεταβλητών α, β) γίνεται στην Pyhton με την απλή εντολή:

a, b = b, a

Πως μπορεί να γίνει με επιπλέον μεταβλητή;

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

temp = b

a = b

a = temp

0

temp = a

b = a

b = temp

0
Selected

temp = a

a = b

b = temp
 

1
Should have chosen
Question 6

Ο παρακάτω αλγόριθμος δυαδικής αναζήτησης χρησιμοποιείται σε λίστες με αύξουσα ταξινόμηση:

def binarySearch(lista, key):

        first = 0

        last = len(lista) - 1

        found = False

        while not found and first <= last:

                mid = (first + last) / 2

                if  key == lista[mid] :

                      found = True

                elif key > lista[mid]  :

                      last = mid - 1

                else:

                    first  = mid +1

        return found

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
True0
Selected
False1
Should have chosen
Question 7

Τι θα συμβεί στο παρακάτω τμήμα αλγορίθμου;

students = ['Δημήτρης', 'Ευγενία', 'Ναταλία', 'Ρένια', 'Αλέξανδρος']

if students[4] < students[3]:

        students[4], students[3] = students[3], students[4]

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

Θα γίνει αύξουσα ταξινόμηση όλης της λίστας:

['Δημήτρης', 'Ευγενία', 'Ρένια', 'Ναταλία', 'Αλέξανδρος']

0

Η λίστα θα γίνει:

['Δημήτρης', 'Ευγενία', 'Ναταλία', 'Αλέξανδρος', 'Ρένια']

0

Η λίστα θα γίνει:

['Δημήτρης', 'Ευγενία', 'Ναταλία', 'Αλέξανδρος', 'Ρένια']

0
Should have chosen
Question 8

Ο παρακάτω αλγόριθμος βελτιστοποιεί την ταξινόμηση, ώστε όταν η λίστα ταξινομηθεί να μην κάνει άσκοπα περάσματα

def optimizedBubbleSort(A):

        N = len(A)

        isSorted = False

        i = 0

       while i < N-1  and not isSorted:

                isSorted = True

                for j in range(N-1, i, -1):

                        if A[j] < A[j-1]:

                               A[j], A[j-1] = A[j-1], A[j]

                               isSorted = False

                i + = 1

πόσα περάσματα θα γίνουν για τη λίστα [7, 8, 9, 12, 4, 5, 11] χρησιμοποιώντας τη βελτιστοποιημένη ταξινόμηση και πόσα άσκοπα θα γινόταν με τον απλό αλγόριθμο ταξινόμησης;

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
  • 4 περάσματα με το βελτιστοποιημένο αλγόριθμο ταξινόμησης
  • και Ν-1 = 7 - 1 = 6 συνολικά περάσματα ή 6 - 4 = 2 άσκοπα περάσματα με τον απλό αλγόριθμο
0
Selected
  • 3 περάσματα με το βελτιστοποιημένο αλγόριθμο ταξινόμησης
  • και Ν-1 = 7 - 1 = 6 συνολικά περάσματα ή 6 - 3 = 3 άσκοπα περάσματα με τον απλό αλγόριθμο
1
Should have chosen
  • 2 περάσματα με το βελτιστοποιημένο αλγόριθμο ταξινόμησης
  • και Ν-1 = 7 - 1 = 6 συνολικά περάσματα ή 6 - 2 = 4 άσκοπα περάσματα με τον απλό αλγόριθμο
0
Question 9

Η δυαδική αναζήτηση βρίσκει το ζητούμενο πολύ πιο αργά από ότι η σειριακή αναζήτηση

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
True0
Selected
False1
Should have chosen
Question 10

Στην παρακάτω αύξουσα ταξινομημένη λίστα  L ψάχνουμε το 45.

0 1 2 3 4 5 6 7 8 9 10 11 12 13
5 10 17 23 28 30 35 40 45 50 60 63 68 70

η πρώτη σύγκριση για τον αριθμό 45 θα είναι με το στοιχείο στο δείκτη: (0+13)/2 =6 άρα με τον L[6] άρα με το 35.

Ποιος είναι ο επόμενος αριθμός που θα συγκριθεί το 45;

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

60

1
Should have chosen

63

0

17

0

50

0
Question 11

για την παρακάτω λίστα a=[9, -2, 6, 4, -8, 12, 5, 18] Συμπληρώστε τα κενά για να γίνει αύξουσα ταξινόμηση

a = [9, -2, 6, 4, -8, 12, 5, 18]

N = len(a)

for i in range(N-1):

        for j in range( ___  ,  _____ , -1):

                if a[j+1] > a[j]:

                       a[j], a[j + 1] = a[j + 1], a[j]

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

for i in range(N-1):

        for j in range( N - 2, i - 1 , -1):

                if a[j+1] > a[j]:

                       a[j], a[j + 1] = a[j + 1], a[j]

0
Should have chosen

for i in range(N-1):

        for j in range( N - 3, i - 1 , -1):

                if a[j+1] > a[j]:

                       a[j], a[j + 1] = a[j + 1], a[j]

0
Selected

for i in range(N-1):

        for j in range( N - 1, i  , -1):

                if a[j+1] > a[j]:

                       a[j], a[j + 1] = a[j + 1], a[j]

0
Question 12

Στην παρακάτω αύξουσα ταξινομημένη λίστα  L ψάχνουμε το 45.

0 1 2 3 4 5 6 7 8 9 10 11 12 13
5 10 17 23 28 30 35 40 45 50 60 63 68 70

η πρώτη σύγκριση για τον αριθμό 45 θα είναι με το στοιχείο στο δείκτη: (0+13)/2 =6 άρα με τον L[6] άρα με το 35.

επειδή 45>35 θα ελέγξει από το δείκτη 6+1 = 7 έως το τέλος της λίστας.

Άρα ο επόμενος έλεγχος θα είναι με το στοιχείο στο δείκτη: (7 + 13) / 2 = 10, άρα με το 60

Με ποιο στοιχείο θα ελεγχθεί μετά;

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

40 και θα κάνει και άλλον έλεγχο

0
Selected

68 και θα κάνει και άλλον έλεγχο

0

50 και θα κάνει και άλλον έλεγχο

0

45 και θα το βρει

0
Should have chosen
Question 13

Τι θα εμφανίσει το παρακάτω πρόγραμμα;

 def check_D(mylist):

        d = True

        i = 0

        N = len(mylist)

        while d and i < N-1:

                if myList[i] < myList[i + 1]:

                        d = False

                i = i + 1

        return d

L = [20, 12, 4, 2]

print check_D(L)

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

None

0

[2, 4, 12, 20]

0

True

0
Should have chosen

False

0
Question 14

Η δυαδική αναζήτηση μπορεί να γίνει σε στοιχεία που βρίσκονται σε κάποια λογική διάταξη, είτε αυτά είναι αριθμοί είτε αλφαριθμητικά

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected
True1
Should have chosen
False0
Question 15

Σε μια ταξινομημένη λίστα 1000 στοιχείων, πόσες είναι οι περισσότερες συγκρίσεις που θα χρειαζόταν για να βρεθεί οποιοδήποτε στοιχείο χρησιμοποιοώντας τη δυαδική αναζήτηση;

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

50
 

0

5

0

10
 

0

δύο στην εβδόμη = 210 = 1024 άρα με  10 προσπάθειες μπορούμε να βρούμε έως και 1024 στοιχεία

Should have chosen

20

0
Question 16

Πόσα περάσματα θα γίνουν για την αύξηση ταξινόμηση της λίστας:

[4, 6, 8, 18, 30, 50, 56, 68, 70, 3, 1]

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

1

0

3

0

4

0
Selected

2

1
Should have chosen
Question 17

Δίνεται το πρόβλημα: Να βρεθούν οι τρεις μεγαλύτεροι αριθμοί σε μια λίστα

Τι λύση θα επιλέγατε;

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

Φθίνουσα ταξινόμηση και μετά με τη for i in range(3)  θα εμφάνιζα τους τρεις πρώτους

0
Should have chosen

Αύξουσα ταξινόμηση και μετά με τη for i in range(3)  θα εμφάνιζα τους τρεις πρώτους

0
Selected

Φθίνουσα ταξινόμηση και μετά με τη for i in range(Ν-1, Ν-4, -1)  θα εμφάνιζα τους τρεις πρώτους

0
Question 18

Η παρακάτω συνάρτηση υπολογίζει σωστά το πλήθος των True σε μια λίστα; Τι θα εμφανίσει το πρόγραμμα;

def count_True(lista):

        pl_true=0

        for item in lista:

                if item:

                        pl_true + = item

        return pl_true

L = [True, True, True, False, False]

print count_True(L)

 

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

rue+True+True θα δώσει ΤrueTrueTrue, άρα θα εμφανίσει: ΤrueTrueTrue

0

Τα υπολογίζει σωστώ, αφού η τιμή True που προσθέτει έχει αριθμητική αξία 1

Δηλαδή  True+True+True = 3

Άρα θα εμφανίσει 3
 

0
Should have chosen

True+True+True θα δώσει μήνυμα λάθους

0
Question 19

Η δυαδική αναζήτηση μπορεί να χρησιμοποιηθεί τόσο σε αύξουσα ταξινομημένη λίστα, όσο και σε φθίνουσα

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected
True1
Should have chosen
False0
Question 20

Τι θα συμβεί στο παρακάτω τμήμα αλγορίθμου;

students = ['Δημήτρης', 'Ευγενία', 'Ναταλία', 'Ρένια', 'Αλέξανδρος']

if students[4] < students[3]:

        students[4], students[3] = students[3], students[4]

if students[3] < students[2]:

        students[3], students[2] = students[2], students[3]

 

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

Η λίστα θα γίνει:

['Δημήτρης', 'Ευγενία', 'Αλέξανδρος', 'Ναταλία', 'Ρένια']

0
Should have chosen
Selected

Η λίστα θα γίνει:

['Δημήτρης', 'Ναταλία', 'Ευγενία', 'Αλέξανδρος', 'Ρένια']

0

['Δημήτρης', 'Αλέξανδρος', 'Ευγενία', 'Ναταλία', 'Ρένια']

0