[FEATURE] Add implementation of IntroSort in C #1489
+164
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds an implementation of the IntroSort (Introspective Sort) algorithm in C.
IntroSort is a hybrid sorting algorithm that combines QuickSort, HeapSort, and InsertionSort.
It begins with QuickSort, switches to HeapSort when recursion depth exceeds a certain limit,
and uses InsertionSort for small partitions. This ensures both fast average-case performance
and worst-case optimality. IntroSort is the algorithm behind std::sort.
Proposed Changes:
introsort.c
with the full IntroSort implementation.2 * log2(n)
(bit-hack__builtin_clz
used for log2).swap
,heapify
,printArray
, and test cases inmain()
.Benefits:
Testing:
This implementation ensures IntroSort is easy to compile and run on any system without additional dependencies (
math.h
removed;log2
replaced with bit-hack).Closes #1488.