nie chce przypisać do listy wartosci z innej listy

0

Problem z linijka 21, a mianowicie do indeksu w tej tablicy nie zostaje przyporządkowana wartość z innej tablicy, ale już dla tego samego indeksu jezeli wezne np 3, a nie a[k] (s[i] = 3) to dziala wszystko ok

```def mergesort(a, p, q):
    mid = (p + q) // 2
    s = a
    k = p
    r = mid + 1
    i = p
    while k <= mid and r <= q:
        if a[k] <= a[r]:
            s[i] = a[k]
            if k + 1 > mid:
                while r <= q:
                    i = i + 1
                    s[i] = a[r]
                    r += 1
            k += 1
        else:
            s[i] = a[r]
            if r + 1 > q:
                while k <= mid:
                    i += 1
                    s[i] = a[k]
                    k += 1
            r += 1
        i = i + 1
    a = s


def merge(a, p, q):
    if p < q:
        mid = (p + q) // 2
        merge(a, p, mid)
        merge(a, mid + 1, q)
        mergesort(a, p, q)
    else:
        return


tab = [1, 5, 2, 4, 3, 0, 6, 9, 8]
dl = len(tab) - 1
merge(tab, 0, dl)
print(tab)
1
def mergesort(a, p, q):
    mid = (p + q) // 2
    s = a.copy()
    k = p
    r = mid + 1
    i = p
    while k <= mid and r <= q:
        if s[k] <= s[r]:
            a[i] = s[k]
            if k + 1 > mid:
                while r <= q:
                    i = i + 1
                    a[i] = s[r]
                    r += 1
            k += 1
        else:
            a[i] = s[r]
            if r + 1 > q:
                while k <= mid:
                    i += 1
                    a[i] = s[k]
                    k += 1
            r += 1
        i = i + 1


def merge(a, p, q):
    if p < q:
        mid = (p + q) // 2
        merge(a, p, mid)
        merge(a, mid + 1, q)
        mergesort(a, p, q)


tab = [1, 5, 2, 4, 3, 0, 6, 9, 8]
dl = len(tab) - 1
merge(tab, 0, dl)
print(tab)

Zmiany wprowadzone w kodzie to:

W linii 4, s = a.copy() tworzy nową tablicę s jako kopię tablicy a.
W linii 11 i 18, s[k] i s[r] odnoszą się do elementów tablicy s, a a[i] odnosi się do elementów tablicy a.
W linii 16 i 23, a[i] zamiast s[i] przypisuje wartość z tablicy s do tablicy a.
Usunięto linię 14, ponieważ nie jest potrzebna. Zmienna a jest modyfikowana w miejscu przez funkcję mergesort.

1 użytkowników online, w tym zalogowanych: 0, gości: 1