Logic Issues:
The boundary checks in your partition function's while loops could lead to index errors
The i <= high condition in the first inner while loop can cause unnecessary comparisons
There's no handling for arrays with duplicate values efficiently
Edge Cases that might fail:
Arrays with duplicate elements might not be handled optimally
Already sorted arrays will have poor performance (O(n²))
Empty arrays or single element arrays aren't explicitly handled