Необходимо реализовать в C++ с использованием классов сортировку динамического массива двусторонним экстремумом. Подскажите, почему на экран выводится неотсортированный массив?
#include <iostream>
#include <cstdlib>
using namespace std;
class clSorting{
public:
int *Arr;
int max, min, n, k, size; // сортировке подвергаются элементы массива с индексами от k до n
clSorting();
int lookingForMax();
int lookingForMin();
void swap(int a, int b);
void sortThis();
~clSorting();
};
/* Конструктор класса */
clSorting::clSorting(){
cout << "Please, input size of your array: ";
cin >> n;
size = n;
cout << endl << "Thank you. Wait, please..." << endl;
Arr = new int[n];
for (int i = 0; i < n; i++){
cout << "Input an element of array: ";
cin >> Arr[i];
cout << endl << "Got it.";
}
cout << endl;
}
/* Метод поиска максимума из массива, n - размер массива */
int clSorting::lookingForMax(){
max = Arr[k];
for (int i = k + 1; i < n; i++){
if (Arr[i]>max) {
max = Arr[i];
}
}
return max;
}
/* Метод поиска минимума из массива, n - размер массива */
int clSorting::lookingForMin(){
min = Arr[k];
for (int i = k + 1; i < n; i++){
if (Arr[i]<min) {
min = Arr[i];
}
}
return min;
}
/* Метод, который меняет два числа местами */
void clSorting::swap(int a, int b){
a = a + b;
b = a - b;
a = a - b;
}
/* Метод сортировки массива размера n */
void clSorting::sortThis(){
k = 0;
while (k < n){
swap(Arr[k], lookingForMin());
k++;
swap(lookingForMax(), Arr[n]);
n--;
}
}
int main(int argc, char** argv){
clSorting *A = new clSorting();
A->sortThis();
cout << "I have sorted your massive:" << endl;
for (int i = 0; i < A->size; i++){
cout << A->Arr[i] << " ";
}
system("PAUSE");
return 0;
}