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

You got 19 of 20 possible points.
Your score: 95%
Question 1

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

def binarySearch(lista, key):

        first = 0

        last = len(lista) - 1

        found = False

        while not found and first <= last:

                mid = (first + last) / 2

                if lista[mid] == key:

                      found = True

                elif lista[mid] < key:

                      first = mid + 1

                else:

                     last = mid - 1

        return found

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

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

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: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

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

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

0
Selected

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

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

1
Should have chosen

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

0
Question 3

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

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

10

0

8

0

4

0
Selected

7

1
Should have chosen
Question 4

O παρακάτω αλγόριθμος της αύξουσας ταξινόμησης Ν στοιχείων σε τι μειονεκτεί;

for i in range(N-1):

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

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

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

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

Σε κάθε πέρασμα, το μικρότερο στοιχείο ταξινομείται. Άρα στην εσωτερική επανάληψη είναι περιττό το να συγκρίνουμε πάντα έως και το ήδη ταξινομημένο στοιχείο, δηλαδή έως και το στοιχείο 0

1
Should have chosen

Δε μειονεκτεί σε τίποτα αφού είναι η βέλτιστη ταξινόμηση....τι να κάνουμε τώρα;

0

Αφού τα στοιχεία είναι N, τα περάσματα από την εξωτερική for θα πρέπει να είναι N και όχι N-1

0
Question 5

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

[28, 28, 28, 28, 28, 28, 28, 30, 30, 30, 30]

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

1

0

2

0
Selected

0

1
Should have chosen

4

0
Question 6

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

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

Η δυαδική αναζήτηση ισχύει για όλους τους τύπους δεδομένων για τους οποίους έχουμε ορίσει του συγκριτικούς τελεστές. Αυτό το χαρακτηριστικό ονομάζεται πολυμορφισμός και είναι από το βασικά πλεονεκτήματα της Python

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

Ο αλγόριθμος της Σειριακή αναζήτησης θα ελέγξει όλα τα στοιχεία σε μια λίστα ακόμα και αν είναι ταξινομημένη

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

Ο παρακάτω αλγόριθμος επιλέγει έναν αριθμό από το 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: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

while not found or guesses > 10:

0

while not found and guesses > 10:

0
Selected

while not found and guesses < 10:

1
Should have chosen

while not found or guesses < 10:

0
Question 10

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

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

8

0
Selected

4

1
Should have chosen

2

0

16

0
Question 11

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

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

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

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

20

0

50
 

0

10
 

0

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

Should have chosen

5

0
Question 13

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

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

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

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

Η παρακάτω συνάρτηση υπολογίζει σωστά το πλήθος των 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: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

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

0

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

0
Selected

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

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

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

1
Should have chosen
Question 16

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

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
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

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

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
Question 17

Επιλέξτε το σωστό πρόγραμμα που θα εμφανίζει σε φθίνουσα σειρά ως προς τους βαθμούς, τα ονόματα των μαθητών της τάξης

Θεωρήστε ότι η λίστα nameL με τα ονόματα και η λίστα gradeL με τους βαθμούς είναι γεμάτες

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

for i in range(N-1):

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

                if gradeL[j] > gradeL[j-1]: 

                       gradeL[j], gradeL[j-1] = gradeL[j-1], gradeL[j]

                       nameL[j], nameL[j-1] = nameL[j-1], nameL[j]

for i in range(N):

        print nameL[i]

 

1
Should have chosen

for i in range(N-1):

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

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

                       gradeL[j], gradeL[j-1] = gradeL[j-1], gradeL[j]

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

        print nameL[i]

 

0

for i in range(N-1):

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

                if gradeL[j] > gradeL[j-1]: 

                       gradeL[j], gradeL[j-1] = gradeL[j-1], gradeL[j]

                       nameL[j], nameL[j-1] = nameL[j-1], nameL[j]

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

        print nameL[i]

 

0

for i in range(N-1):

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

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

                       gradeL[j], gradeL[j-1] = gradeL[j-1], gradeL[j]

                       nameL[j], nameL[j-1] = nameL[j-1], nameL[j]

for i in range(N):

        print nameL[i]

 

0
Question 18

Να επιλεξετε τον  σωστό αλγόριθμο της Δυαδικής αναζήτησης ενός στοιχείου key σε μια αύξουσα ταξινομημένη λίστα array

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

def binarySearch(array, key):

        first = 0

        last = len(array) - 1

        found = False

        while first <= last and not found:

                mid = (first + last) / 2

               if array[mid] == key:

                     found = True

               elif array[mid] < key:

                     first = mid + 1

              else:

                     last = mid - 1

        return found

1
Should have chosen

def binarySearch(array, key):

        first = 0

        last = len(array) - 1

        found = False

        while first <= last and not found:

                mid = (first + last) / 2

               if array[mid] == key:

                     found = True

               elif array[mid] > key:

                     first = mid + 1

              else:

                     last = mid - 1

        return found

0

def binarySearch(array, key):

        first = 0

        last = len(array) - 1

        found = False

        while first <= last and not found:

                mid = (first + last) / 2

               if array[mid] == key:

                     found = True

               elif array[mid] < key:

                     last = mid + 1

              else:

                     first = mid - 1

        return found

0

def binarySearch(array, key):

        first = 0

        last = len(array) - 1

        found = False

        while first <= last and not found:

                mid = (first + last) / 2

               if array[mid] == key:

                     found = True

               elif array[mid] < key:

                     first = mid - 1

              else:

                     last = mid + 1

        return found

0
Question 19

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

[55, 46, 44, 34, 28, 18, 14, 12, 10, 8, 4]

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

8

0

9

0
Selected

10

1
Should have chosen

11

0
Question 20

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

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