Sobes.tech
Junior — Middle

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

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 είναι τα μεγέθη των αρχικών πινάκων.