chromium / external / github.com / xtgo / set / b3061243f6f48179bd0bf2b0670addf79eb91a13 / . / doc.go

// Copyright 2015 Kevin Gillette. All rights reserved. | |

// Use of this source code is governed by a BSD-style | |

// license that can be found in the LICENSE file. | |

// Package set implements type-safe, non-allocating algorithms that operate | |

// on ordered sets. | |

// | |

// Most functions take a data parameter of type sort.Interface and a pivot | |

// parameter of type int; data represents two sets covering the ranges | |

// [0:pivot] and [pivot:Len], each of which is expected to be sorted and | |

// free of duplicates. sort.Sort may be used for sorting, and Uniq may be | |

// used to filter away duplicates. | |

// | |

// All mutating functions swap elements as necessary from the two input sets | |

// to form a single output set, returning its size: the output set will be | |

// in the range [0:size], and will be in sorted order and free of | |

// duplicates. Elements which were moved into the range [size:Len] will have | |

// undefined order and may contain duplicates. | |

// | |

// All pivots must be in the range [0:Len]. A panic may occur when invalid | |

// pivots are passed into any of the functions. | |

// | |

// Convenience functions exist for slices of int, float64, and string | |

// element types, and also serve as examples for implementing utility | |

// functions for other types. | |

// | |

// Elements will be considered equal if `!Less(i,j) && !Less(j,i)`. An | |

// implication of this is that NaN values are equal to each other. | |

package set | |

// BUG(extemporalgenome): All ops should use binary search when runs are detected |