-1
When presenting the elements of the vector, there are strange numbers that do not correspond to those entered by the user. I would like to identify where the error is.
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
void showVetor(int *v, int n);
void quickSort(int *v, int esq, int dir);
int separar(int *v, int esq, int dir);
void trocar(int *v, int i, int j);
int main()
{
int n,iEscolhido;
vector<int> v;
cout << "Entre com o tamanho do vetor que deseja ordenar: ";
cin >> n;
cout << endl;
for (int i = 0; i < n; i++){
cout << "Digite o elemento escolhido para compor o vetor: ";
cin >> iEscolhido;
v.push_back(iEscolhido);
}
int iVetor[n];
cout << "VETOR ORIGINAL" << endl;
showVetor(iVetor,n);
quickSort(iVetor,0,n-1);
cout << "VETOR ORDENADO" << endl;
showVetor(iVetor,n);
return 0;
}
void showVetor(int *v, int n){
cout << "Indices: ";
for (int i = 0; i < n; i++){
cout << setw(3) << i << " ";
}
cout << endl;
cout << "Elementos: ";
for (int i = 0; i < n; i++){
cout << setw(3) << v[i] << " ";
}
cout << endl << endl;
}
void quickSort(int *v, int esq, int dir){
if (esq < dir){
int j = separar(v, esq, dir);
quickSort(v, esq, j -1);
quickSort(v, j + 1, dir);
}
}
int separar(int *v, int esq, int dir){
int iPivo = v[esq];
int i = esq + 1;
int j = dir;
while (i <= j){
if (v[i] <= iPivo)
i++;
else if (v[j] > iPivo)
j--;
else if (i <= j){
trocar(v,i,j);
}
}
trocar(v,esq,j);
return j;
}
void trocar(int *v, int i, int j){
int iAux;
iAux = v[i];
v[i] = v[j];
v[j] = iAux;
}