tb_sort.h 865 B

1234567891011121314151617181920212223242526
  1. // ================================================================================
  2. // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
  3. // == See tb_core.h for more information. ==
  4. // ================================================================================
  5. #ifndef TB_SORT_H
  6. #define TB_SORT_H
  7. namespace tb {
  8. template<class CONTEXT, class TYPE>
  9. static void insertion_sort(TYPE *elements, size_t element_count, CONTEXT context, int(*cmp)(CONTEXT context, const TYPE *a, const TYPE *b))
  10. {
  11. size_t i, j;
  12. for (i = 1; i < element_count; i++)
  13. {
  14. TYPE value = elements[i];
  15. for (j = i; j > 0 && cmp(context, &value, &elements[j - 1]) < 0; j--)
  16. elements[j] = elements[j - 1];
  17. elements[j] = value;
  18. }
  19. }
  20. }; // namespace tb
  21. #endif // TB_SORT_H