sort.h 981 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright 2010-2021 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
  4. */
  5. #ifndef BX_SORT_H_HEADER_GUARD
  6. #define BX_SORT_H_HEADER_GUARD
  7. #include "bx.h"
  8. namespace bx
  9. {
  10. ///
  11. typedef int32_t (*ComparisonFn)(const void* _lhs, const void* _rhs);
  12. ///
  13. void quickSort(
  14. void* _data
  15. , uint32_t _num
  16. , uint32_t _stride
  17. , const ComparisonFn _fn
  18. );
  19. ///
  20. void radixSort(
  21. uint32_t* _keys
  22. , uint32_t* _tempKeys
  23. , uint32_t _size
  24. );
  25. ///
  26. template <typename Ty>
  27. void radixSort(
  28. uint32_t* _keys
  29. , uint32_t* _tempKeys
  30. , Ty* _values
  31. , Ty* _tempValues
  32. , uint32_t _size
  33. );
  34. ///
  35. void radixSort(
  36. uint64_t* _keys
  37. , uint64_t* _tempKeys
  38. , uint32_t _size
  39. );
  40. ///
  41. template <typename Ty>
  42. void radixSort(
  43. uint64_t* _keys
  44. , uint64_t* _tempKeys
  45. , Ty* _values
  46. , Ty* _tempValues
  47. , uint32_t _size
  48. );
  49. } // namespace bx
  50. #include "inline/sort.inl"
  51. #endif // BX_SORT_H_HEADER_GUARD