Здесь
int * leftP = &lptr;
int * rightP = &rptr;
вы берете адреса параметров функции. Когда вы звоните
swap(leftP,rightP);
, вы меняете значения lptr
и rptr
. Когда вы пишете
--(*rightP)
, вы уменьшаете значение rptr
. Вы никогда не изменяете элемент массива.
У меня нет степени CS, поэтому, когда я хочу отсортировать массив, я использую std::sort
:
#include <algorithm>
#include <iostream>
#include <iterator>
int main() {
int tab[] = {10, 40, 30, 4, 3, 312, 3, 4, 1};
std::sort( std::begin(tab), std::end(tab));
for (int& x : tab)
std::cout << x << " ";
return 0;
}
Если вам нужно реализовать это самостоятельно в качестве упражнения, вам следует научиться пользоваться отладчиком, иначе вы всегда столкнетесь с такими проблемами. Чтобы стать лучше в кодировании, нужно не столько не допустить ошибок, сколько узнать, как их обнаружить и исправить, и именно для этого создан отладчик.