MCPcopy Create free account
hub / github.com/TheAlgorithms/Go / Patience

Function Patience

sort/patiencesort.go:16–42  ·  view source on GitHub ↗
(arr []T)

Source from the content-addressed store, hash-verified

14import "github.com/TheAlgorithms/Go/constraints"
15
16func Patience[T constraints.Ordered](arr []T) []T {
17 if len(arr) <= 1 {
18 return arr
19 }
20
21 var piles [][]T
22
23 for _, card := range arr {
24 left, right := 0, len(piles)
25 for left < right {
26 mid := left + (right-left)/2
27 if piles[mid][len(piles[mid])-1] >= card {
28 right = mid
29 } else {
30 left = mid + 1
31 }
32 }
33
34 if left == len(piles) {
35 piles = append(piles, []T{card})
36 } else {
37 piles[left] = append(piles[left], card)
38 }
39 }
40
41 return mergePiles(piles)
42}
43
44func mergePiles[T constraints.Ordered](piles [][]T) []T {
45 var ret []T

Callers

nothing calls this directly

Calls 1

mergePilesFunction · 0.85

Tested by

no test coverage detected