2016-11-21 8 views
-1

Я новичок в программировании и я пытаюсь узнать о алгоритмах и реализующие их в R. Вот моя попытка вставного рода:вставки алгоритм сортировки в 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)) 

мой код запуск без какого-либо ошибка, но выход моей функции не так

+1

Пожалуйста, разместите свой код, а не его фотографию. Также, каков ваш вопрос? – etienne

+0

мой код ниже, как показано на рисунке: –

+2

Здесь нет вопросов. – tkerwin

ответ

1

есть по крайней мере 4 проблемы с вашим кодом, 1 несовершеннолетний и 3 основных:

1) Там опечатка в названии, вам вероятно, имел в виду insertionsort_function (что понапрасну многословным - почему бы просто не insertionsort)

2) Вы не возвращение ничего. Если вы хотите вернуть отсортированную копию исходного массива, то A будет самой последней строкой функции. R возвращает последнее выражение в определении функции.

3) A[j] > key должно быть A[i] > key

4) & (который для векторов) следует заменить && (которая предназначена для логических условий).

внесении этих изменений дает:

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 
} 

Например,

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

Я не уверен, что R является хорошим языком для изучения абсолютных основ программирования. Если вы хотите научиться программированию именно в R, я бы рекомендовал книгу, которая явно использует R для обучения программированию. Например, я нашел книгу Hands-On Programming with R хорошим местом для начала. Это быстрое чтение, которое учит основам программирования в контексте R.

+0

thank и за отличный ответ. Я осознаю свою ошибку и ваш ответ, моя проблема решена. Я иду к этой книге, очень благодарю вас –

+0

@NeginZarbakhsh Еще одна полезная (но упрямая) опция - [Hadley's _R for Data Science_] (http://r4ds.had.co.nz/), которая бесплатна, если только вам нужна печатная версия. – alistaire

+0

@ alistaire thanks –

Смежные вопросы