template<class T> void swap(T* x, int i, int j) { T tmp; tmp = x[i]; x[i] = x[j]; x[j] = tmp; } template<class T> void BubbleSort3(T* x) { int last = -1; for (int i = 0; i < n; i++) { int k = i; if (last > 0 && last > i) { k = last; } for (int j = n-1; j > k; j-- ) { if (x[j-1] > x[j]) { swap(x, j-1, j); last = j; } } if (last == k) break; } }