일부 기본 데이터 구조와 해당 알고리즘에서 작동하는 알고리즘에 대한 구현을 검토 중입니다.하나의 재귀 함수와 foldBack 함수로 삽입 정렬 구현
let rec insert x = function
| [] -> [x]
| y::ys -> if x<=y then x::y::ys
else y::(insert x ys)
and insertionSort = function
| [] -> []
| x::xs -> insert x (insertionSort xs)
let myLst = [8;3;3;5;-6;0;1;4;-3;2]
let result = myLst |> insertionSort
발 결과 : 나는 삽입에 대한 관용적 F # 코드 정렬 매우 같은 추측 INT 목록 = [-6; -삼; 0; 1; 2; 삼; 삼; 4; 5; 8]
아래와 같이 List.foldBack 및 단 하나의 재귀 함수로 구현하려고했지만 올바른 결과를 얻을 수 없었습니다. 누구든지 문제가있는 곳을 파악할 수 있습니까?
let rec anotherInsertionSort lst =
List.foldBack(fun x (ys:list<_>) ->
if ys.IsEmpty then [x]
elif x <= ys.Head then x::ys
else ys.Head::x::anotherInsertionSort ys.Tail) lst []
'else' 브랜치에서'x'는 사용되지 않습니다 ... – kvb
@kvb, oop ... 지금 당장 받으십시오. 많이 감사드립니다! 나는 그것을 게시하기 전에 발견했을 것이다. – 1B4T
@cfj FWIW, 필자가 질문하는 문제를 보여주고 내가 다른 것을 보지 않았 음을 확인하기 위해 게시하기 전에 항상 샘플 코드를 테스트하려고합니다. 시간을 절약합니다. :-) –