Если есть память на ещё один массив из 100000 элементов, то быстрее всего будет работать сортировка подсчётом:
void CountSort(int *A1,int *A2,int L,int Nmax){
for(int i=0;i<=Nmax;i++) A2[i]=0;
for(int i=0;i < L;i++) A2[A1[i]]++;
int s=0;
for(int i=0;i<=Nmax;i++) for(int j=0;j < A2[i];j++) A1[s++]=i;
}
Здесь A1 - сортируемый массив, A2 - дополнительный массив длиной Nmax+1.
У меня получилось среднее время 0.88 миллисекунды. Для сравнения, std::sort даёт на тех же примерах 7.2 миллисекунды - в 8 раз больше.
Возможно, радикс-сортировка по модулю 256 даст ещё меньшее время (она не так агрессивно работает с памятью). Но она в 4 строчки не уместится.