Sobes.tech
Middle — Senior

Πώς υλοποιείται η συγχώνευση δύο ταξινομημένων πινάκων σε έναν ταξινομημένο πίνακα;

sobes.tech AI

Απάντηση από AI

Για να συγχωνεύσετε δύο ταξινομημένους πίνακες σε έναν ταξινομημένο πίνακα, μπορείτε να χρησιμοποιήσετε έναν αλγόριθμο συγχώνευσης που μοιάζει με αυτόν που χρησιμοποιείται στην ταξινόμηση συγχώνευσης (merge sort).

Ιδέα:

  • Διασχίστε και τους δύο πίνακες με δύο δείκτες.
  • Σε κάθε βήμα, συγκρίνετε τα τρέχοντα στοιχεία και προσθέστε το μικρότερο στον τελικό πίνακα.
  • Όταν ένας από τους πίνακες τελειώσει, προσθέστε τα υπόλοιπα στοιχεία του άλλου πίνακα.

Παράδειγμα σε Go:

func mergeSortedArrays(a, b []int) []int {
    result := make([]int, 0, len(a)+len(b))
    i, j := 0, 0

    for i < len(a) && j < len(b) {
        if a[i] < b[j] {
            result = append(result, a[i])
            i++
        } else {
            result = append(result, b[j])
            j++
        }
    }

    // Προσθέστε τα υπόλοιπα στοιχεία
    result = append(result, a[i:]...)
    result = append(result, b[j:]...)

    return result
}

Αυτός ο αλγόριθμος λειτουργεί σε χρόνο O(n + m), όπου n και m είναι τα μεγέθη των εισερχόμενων πινάκων.