SortStable sorts vals according to c, with equal values in their original order. SortStable allocates more memory than [SortStableReader].
(vals []super.Value)
| 219 | // SortStable sorts vals according to c, with equal values in their original |
| 220 | // order. SortStable allocates more memory than [SortStableReader]. |
| 221 | func (c *Comparator) SortStable(vals []super.Value) { |
| 222 | tmp := make([]super.Value, len(vals)) |
| 223 | for i, index := range c.sortStableIndices(vals) { |
| 224 | tmp[i] = vals[i] |
| 225 | if j := int(index); i < j { |
| 226 | vals[i] = vals[j] |
| 227 | } else if i > j { |
| 228 | vals[i] = tmp[j] |
| 229 | } |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | // SortStableReader returns a reader for vals sorted according to c, with equal |
| 234 | // values in their original order. |