2016-11-21 3 views
-1

Ich bin neu in der Programmierung und ich versuche, über Algorithmen zu lernen und sie in R. Umsetzung Hier ist mein Versuch einer Insertionsort:Insertionsort-Algorithmus in R

# insertion sort algorithm 
inserionsort_function <- function(A){ 
    for (j in 2:length(A)) { 
    key = A[j] 
    # insert A[j] into sorted sequence A[1,...,j-1] 
    i = j - 1 
    while (i > 0 & A[j] > key) { 
     A[(i + 1)] = A[i] 
     i = i - 1 
    } 
    A[(i + 1)] = key 
    } 
} 

inserionsort_function(c(5, 2, 4, 6, 1, 3)) 

mein Code laufen, ohne dass Fehler aber die Ausgabe meiner Funktion ist nicht wahr

+1

Bitte poste deinen Code, kein Bild davon. Was ist deine Frage? – etienne

+0

mein Code ist wie unten im Bild: –

+2

Hier ist keine Frage. – tkerwin

Antwort

1

Es gibt mindestens vier Probleme mit Ihrem Code, 1 kleinere und 3 großen:

1) Es gibt einen Tippfehler im Namen ist, Sie wahrscheinlich gemeint insertionsort_function (was unnötig ausführlich ist - warum nicht nur insertionsort)

2) Sie sind nicht etwas zurück. Wenn Sie eine sortierte Kopie des ursprünglichen Arrays zurückgeben möchten, müssen Sie A als letzte Zeile der Funktion angeben. R gibt den letzten Ausdruck in einer Funktionsdefinition zurück.

3) A[j] > key sollte A[i] > key

4) & (werden, die für Vektoren ist) sollten durch && ersetzt werden (die für die logischen Bedingungen ist).

machen diese Veränderungen ergibt:

insertionsort_function <- function(A){ 
    for (j in 2:length(A)) { 
    key = A[j] 
    # insert A[j] into sorted sequence A[1,...,j-1] 
    i = j - 1 
    while (i > 0 && A[i] > key) { 
     A[(i + 1)] = A[i] 
     i = i - 1 
    } 
    A[(i + 1)] = key 
    } 
    A 
} 

Zum Beispiel

> insertionsort_function(c(5, 2, 4, 6, 1, 3)) 
[1] 1 2 3 4 5 6 

ich davon überzeugt bin, nicht, dass R eine gute Sprache ist es, die absoluten Grundlagen der Programmierung für das Lernen. Wenn Sie die Programmierung speziell in R lernen wollen, würde ich ein Buch empfehlen, in dem explizit R programmiert wird. Zum Beispiel fand ich das Buch Hands-On Programming with R einen guten Startpunkt. Es ist eine kurze Lektüre, die die Grundlagen der Programmierung in einem R-Kontext lehrt.

+0

danken du für deine großartige Antwort. Ich erkenne meinen Fehler und durch deine Antwort wird mein Problem gelöst. Ich werde von diesem Buch gehen, vielen Dank –

+0

@NeginZarbakhsh Eine andere gute (aber rechthaberische) Option ist [Hadleys _R for Data Science_] (http://r4ds.had.co.nz/), die kostenlos ist, es sei denn Sie wollen eine Hardcopy. – alistaire

+0

@ alistaire danke –