Wytłumaczenie sortowań + prośba o dwa sortowania.

0

Witam.

Mam napisane w Visual Basic trzy sortowania. Mam ogromną prośbę, żeby mi je ktoś wytłumaczył linijka po linijce ten kod w VB, nie mogę sobie sam poradzić a potrzebuję to na studia na zaliczenie.
Wszystko resztę wyświetlanie liczb w ListView mam zrobione wszystkie sortowania działają chodzi mi o wytłumaczenie linijka po linijce. Sortowanie bąbelkowego w poście nie uwzględniłem, bo sam potrafiłem je wytłumaczyć. Losowanie liczb też zrobiłem.

Zmienna Tbox to Długość tablicy (Użytkownik wprowadza ile liczb losowych chce posortować)

Tablica to TABLICA

Wstawianie

 For j = Tbox2 - 1 To 1 Step -1
                x = TABLICA(j)
                i = j + 1
                While (i <= Tbox2) And (x > TABLICA(i))
                    TABLICA(i - 1) = TABLICA(i)
                    i = i + 1
                End While
                TABLICA(i - 1) = x
            Next

Wybór

 
 For j = 1 To Tbox - 1
                l = j
                For i = j + 1 To Tbox
                    If TABLICA(i) < TABLICA(l) Then l = i
                Next
                temp = TABLICA(l)
                TABLICA(l) = TABLICA(j)
                TABLICA(j) = temp
            Next

Shella

 h = 1
            Do
                h = 3 * h + 1
            Loop Until h >= Tbox
            h = Int(h / 9)
            If h = 0 Then h = 1
            
            While h > 0
                For j = Tbox - h To 1 Step -1
                    x = TABLICA(j)
                    i = j + h
                    While (i <= Tbox) And (x > TABLICA(i))
                        TABLICA(i - h) = TABLICA(i)
                        i = i + h
                    End While
                    TABLICA(i - h) = x
                Next
                h = Int(h / 3)
            End While

I mam problem z dwoma sortowaniami szybkie i kopcowanie. Prosił bym o te dwa sortowania obojętnie w jakim języku, oraz wytłumaczenie.

0

Wstawianie działa tak, jakbyś miał na stole zakrytą talię kart, podnosił po jednej i wstawiał w odpowiednie miejsce w ręce. Podnosisz kartę ze stołu a następnie szukasz dla niej miejsca wśród kart w ręce. W ręce karty są już posortowane więc wystarczy że znajdziesz miejsce gdzie twoja karta "pasuje" (tzn po lewej jest mniejsza od niej a po prawej większa).

Wybieranie działa tak jakbyś miał w ręcę całą talię kart i chciał je ułożyć. Wyszukujesz w tej talii najmniejszą kartę i przenosisz na sam początek. Następnie wyszukujesz kolejną najmniejszą i przenosisz na 2 miejsce itd.

Gdybyś te kody napisał po ludzku to nie trzeba by ci ich tłumaczyć. Serio nie da sie napisać tak (pseudokod):

wstawianie(){
  weźKartęZNieposortowanejCzęściTalii()
  znajdźDlaNiejMiejsceWPosortowanejCzęści();
  wstaw()
}

wybieranie(){
  znajdźNajmniejsząKartęWNieposortowanejCzęści();
  wstawNaKoniecPosortowanejCzęści();
}

?

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