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

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

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

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

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

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

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

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

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

1

0

4

0

3

0
Selected

2

1
Should have chosen
Question 4

Ο παρακάτω αλγόριθμος επιλέγει έναν αριθμό από το 1 έως και το 100 και ο χρήστης προσπαθεί να τον μαντέψει. Βελτιώστε τον αλγόριθμο στην  else:  ώστε το πρόγραμμα να δίνει μια βοήθεια στο χρήστη, ώστε αν ο αριθμός που έδωσε είναι μικρότερος ή μεγαλύτερος να εμφανίζεται αντίστοιχο μήνυμα

import random

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

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

found = False

while not found:

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

        guesses + = 1

        if guess == secret_number:

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

                found = True

        else:

                print 'Δυστυχώς δεν το βρήκες, ξαναπροσπάθησε'
 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

else:

        if guess > guesses:

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

        else:

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

0
Selected

else:

        if guess < secrtet_number:

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

        else:

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

0

else:

        if guess < secrtet_number:

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

        else:

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

0
Should have chosen
Question 5

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

[28, 28, 28, 6, 6, 6, 6, 6, 6, 6, 6]

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

10

0
Selected

8

1
Should have chosen

7

0

3

0
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 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 7

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

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

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

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

0
Should have chosen
Selected

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

0

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

0
Question 8

Επιλέξτε έναν πιο συνοπτικό τρόπο εκτέλεσης των παρακάτω εντολών, που δηλώνουν το πρώτο πέρασμα της αύξουσας ταξινόμησης σε μια λίστα 5 στοιχείων:

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]

if students[2] < students[1]:

        students[2], students[1] = students[1], students[2]

if students[1] < students[0]:

        students[1], students[0] = students[0], students[1]

 

 

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

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

        if studnets[j] < students[j-1]:

                students[j], students[j-1] = students[j-1], students[j]

0

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

        if studnets[j-1] < students[j-2]:

                students[j-1], students[j-2] = students[j-2], students[j-1]

0
Selected

for j in range( 4, -1, -1):

        if studnets[j] < students[j-1]:

                students[j], students[j-1] = students[j-1], students[j]

0

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

        if studnets[j] < students[j-1]:

                students[j], students[j-1] = students[j-1], students[j]

0
Should have chosen
Question 9

Για την παρακάρω λίστα με 7 αριθμούς ποια θα είναι η τιμή της λίστας μετά από τρία περάσματα, αν χρησιμοποιήσουμε τον αλγόριθμο της αύξουσας ταξινόμησης (φυσαλίδα);

[55, 34, 5, 3, 2, 1, 1]

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer
Selected

[1, 1, 2, 55, 34, 5, 3]

1
Should have chosen

[1, 2, 3, 55, 34, 5, 1]

0

[1, 1, 55, 34, 5, 3, 2]

0
Question 10

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

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

0

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

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

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

0
Should have chosen
Selected

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

0
Question 11

Η σειριακή αναζήτηση σαρώνει όλα τα στοιχεία μιας ταξινομημένης λίστας χωρίς να εκμεταλλεύεται τη διάταξη των στοιχείων

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

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

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 13

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

 def isAscending(mylist):

        ascending = True

        i = 0

        N = len(mylist)

        while ascending and i < N-1:

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

                        ascending = False

                i = i + 1

        return ascending

L = [12, 40, 58, 80, 79]

print isAscending(L)

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

[12, 40, 58, 79, 80]

0
Selected

True

0

False

0
Should have chosen

None

0
Question 14

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

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
Selected
True1
Should have chosen
False0
Question 15

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

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

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

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

Score: 0 of 1
Your answerChoiceScoreFeedbackCorrect answer

1

0

0

0
Should have chosen

2

0
Selected

4

0
Question 17

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

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 18

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

 

Score: 1 of 1
Your answerChoiceScoreFeedbackCorrect answer

8

0
Selected

7

1
Should have chosen

10

0

4

0
Question 19

Ο παρακάτω αλγόριθμος επιλέγει έναν αριθμό από το 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
Selected

while not found and guesses > 10:

0

while not found or guesses > 10:

0

while not found or guesses < 10:

0
Question 20

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

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

0

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

0
Selected

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

1
Should have chosen