Ταξινόμηση

Ξεκίνησε από Aischinis, 27 Μαΐου 2017, 11:39:17 ΜΜ

« προηγούμενο - επόμενο »

Aischinis

Συνάδελφοι,

πως ταξινομείται ένας μονοδιάστατος πίνακας και ταυτόχρονα ένας δισδιάστατος πίνακας;  :o

Μπορούμε να έχουμε ένα παράδειγμα;

thanks  :angel:

petrosp13

Αν ο μονοδιάστατος είναι παράλληλος με τις γραμμές του δισδιάστατου, τότε κάθε φορά που αντιμετατίθενται 2 στοιχεία του μονοδιάστατου, θα πρέπει να αντιμετατίθενται και οι αντίστοιχες γραμμές του δισδιάστατου
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Λαμπράκης Μανώλης

Καλημέρα σε όλους

υποθέτω συνάδελφε ζητάς κάτι τέτοιο ?? έστω έχουμε 100 πωλητές σε μία εταιρία με τις μηνιαίες πωλήσεις τους σε ένα χρόνο
σε πωλ[100,12] και παράλληλο πίνακα με τα ονόματα των μηνών μήνες[12]  .. ζητάμε τις 5 μεγαλύτερες πωλήσεις κάθε πωλητή και σε ποιους μήνες τις πέτυχε .. κατά την αντιμετάθεση στοιχείων  των γραμμών "χαλάει η παραλληλότητα" με τους μήνες και κατά συνέπεια με όλες τις άλλες γραμμές, οπότε χρειάζονται αρκετές αντιμετεθέσεις για να παραμείνουν παράλληλες οι επόμενες γραμμές με τους μήνες για τις ταξινομήσεις των επόμενων γραμμών

Αλγόριθμος ταξινόμηση_δισδιάστατου
    Δεδομένα //πωλ, μήνες//   
    Για γρ από 1 μέχρι 100   
        Για i από 2 μέχρι 12   
   Για j από 12 μέχρι i με_βήμα -1   
       Αν  πωλ[γρ, j-1]<πωλ[γρ, j] τότε
      ! αντιμετάθεσε τους μήνες
             Αντιμετάθεσε μην[j-1], μην[j]
! και όλες τις γραμμές για να παραμείνουν παράλληλες   
             Για κ από 1 μέχρι 100
                Αντιμετάθεσε πωλ[κ, j-1], πωλ[κ,j]
             Τέλος_επανάληψης
       Τέλος_αν
             Τέλος_επανάληψης
          Τέλος_επανάληψης
           Για λ από 1 μέχρι 5   ! εμφάνισε τα 5 πρώτα στοιχεία και μήνες
       Εμφάνισε πωλ[γρ, λ], μην[λ]
        Τέλος_επανάληψης
    Τέλος_επανάληψης
Τέλος  ταξινόμηση_δισδιάστατου

Aischinis

Καλημέρα  :)

Ακριβώς αυτό ζητούσα, έτσι το σκέφτηκα!
Και έχω να πω πως κάτι τέτοιο είναι πολύ χρήσιμο και αποτελεί καλή άσκηση για τους μαθητές μας.

Ευχαριστώ!

eris_st

μια λύση για αυτή την άσκηση;

Λάμπρος Παπαδόπουλος

Μερικές φορές είναι βολικό να χρησιμοποιείς αντίγραφα των δεδομένων που χρειάζεσαι.
Με την προϋπόθεση οτι δεν είναι όλες άκυρες και όλες οι δεύτερες επιδόσεις είναι διαφορετικές, μια
πρόχειρη λύση για τα δυο τελευταία ερωτήματα είναι η παρακάτω:
Κώδικας: bash
max1 <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
   ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
      αντΕπ[j] <- Επίδοση[i,j]
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

   ταξινόμηση ΚΑΙ εκτύπωση του αντΕπ

   ΑΝ αντΕπ[1] > max1 ΤΟΤΕ
      max1 <- αντΕπ[1]
      max2 <- αντΕπ[2]
      νικητής <- ΟΝ[i]
   ΑΛΛΙΩΣ_ΑΝ αντΕπ[1] = max1 ΤΟΤΕ
      ΑΝ αντΕπ[2]>max2 ΤΟΤΕ
         max2 <- αντΕπ[2]
         νικητής <- ΟΝ[i]
      ΤΕΛΟΣ_ΑΝ
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Λάμπρος Παπαδόπουλος

Μια ολοκληρωμένη λύση είναι η παρακάτω
(τελικά δεν χρειάζεται αντίγραφο. Όταν έγραψα το προηγούμενο post έφτιαχνα μια άσκηση που είχε έναν πίνακα από πάνω και
παρασύρθηκα...)
Κώδικας: bash
ΠΡΟΓΡΑΜΜΑ Άλμα_εις_μήκος
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: i, j, γρ
  ΠΡΑΓΜΑΤΙΚΕΣ: Επίδοση[12, 6], tmp, max1, max2
  ΧΑΡΑΚΤΗΡΕΣ: ON[12], νικητής

ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
    ΓΡΑΨΕ 'Όνομα ', i, 'ου αθλητή'
    ΔΙΑΒΑΣΕ ON[i] 
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 6
      ΓΡΑΨΕ 'Επίδοση στο ', j, 'o άλμα'
      ΔΙΑΒΑΣΕ Επίδοση[i, j] 
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΓΙΑ γρ ΑΠΟ 1 ΜΕΧΡΙ 12

    ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 6
      ΓΙΑ j ΑΠΟ 6 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
        ΑΝ Επίδοση[γρ, j] > Επίδοση[γρ, j - 1] ΤΟΤΕ
          tmp <- Επίδοση[γρ, j] 
          Επίδοση[γρ, j] <- Επίδοση[γρ, j - 1] 
          Επίδοση[γρ, j - 1] <- tmp
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    ΓΡΑΨΕ ON[γρ] 
    j <- 1
    ΟΣΟ j <= 6 ΕΠΑΝΑΛΑΒΕ
      ΑΝ Επίδοση[γρ, j] > 0 ΤΟΤΕ
        ΓΡΑΨΕ Επίδοση[γρ, j] 
        j <- j + 1
      ΑΛΛΙΩΣ
        j <- 7
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

  max1 <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 12
    ΑΝ Επίδοση[i, 1] > max1 ΤΟΤΕ
      max1 <- Επίδοση[i, 1] 
      max2 <- Επίδοση[i, 2] 
      νικητής <- ON[i] 
    ΑΛΛΙΩΣ_ΑΝ Επίδοση[i, 1] = max1 ΤΟΤΕ
      ΑΝ Επίδοση[i, 2] > max2 ΤΟΤΕ
        max2 <- Επίδοση[i, 2] 
        νικητής <- ON[i] 
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Νικητής ο ', νικητής

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ