For programming languages that lack an efficient built-in sorting algorithm, I would opt for the Quicksort algorithm. I prefer Quicksort because it is among the fastest sorting algorithms for average-case scenarios. Its average time complexity is O(n*logn), although it can degrade to O(n^2) in the worst-case scenario. Nevertheless, the likelihood of encountering the worst-case situation diminishes as input size increases. Below is an example of how it can be implemented in code: void quickSort ( int [ ] arr , int begin , int end ) { if ( begin < end ) { int partitionIndex = partition ( arr , begin , end ) ; quickSort ( arr , begin , partitionIndex - 1 ) ; quickSort ( arr , partitionIndex + 1 , end ) ; } } int partition ( int [ ] arr , int begin , int end ) { int pivot = arr [ end ] ; int i = ( begin - 1 ) ; for ( int j = begin ; j < end ; j ++ ) { if ( arr [ j ] <= pivot ) { i ++ ; int swapTemp = arr [ i ] ; arr [ i ] = arr [ j ] ; arr [ j ] = swapTemp ; } } int swapTemp = arr [ i + 1 ] ; arr [ i + 1 ] = arr [ end ] ; arr [ end ] = swapTemp ; return i + 1 ; } The assumption is that the input size is significantly large, and the programming language being used does not offer a built-in optimized sorting function.