qsort
int Partition(int* array, int low, int high) { int pivot = array[low]; while (low < high) { while (low < high && array[high] >= pivot) { --high; } array[low] = array[high]; while (low < high && array[low] <= pivot) { ++low; } array[high] = array[low]; } array[low] = pivot; return low; } void qsort(int* array, int low, int high) { if (low < high) { int pivot_position = Partition(array, low, high); qsort(array, low, pivot_position - 1); qsort(array, pivot_position + 1, high); } } int _tmain(int argc, _TCHAR* argv[]) { int arr[] = { 1, 5, 3, 1, 4 }; qsort(arr, 0, 4); return 0; }