Sono inceppato in un altro problema, ho messo il bubblesort in una funzione apposita, e il programma dovrebbe fare anche un grafico di quantità di ogni valore.
per esempio se il vettore è (1, 1, 1, 2, 2, 3)
Dovrebbe stamparmi
1 ***
2 **
3 *
Ma non so per quale motivo ci sono due problemi, ma credo che il secondo dipenda dal primo:
1) Quando ordina l'algoritmo, alla fine ci mette la dimensione. Per esempio se il vettore non ordinato è ( 3,9,6,1) ordinandolo diventa (1,3,6,9,4)
2) Per calcolare la quantità degli indici con lo stesso valore non mi vede l'ultimo indice.
Ecco a voi il codice, spero che qualcuno riuscirà ad aiutarmi ancora:
#include <cstdlib>
#include <iostream>
#include <time.h>
#define DIM 10
using namespace std;
int bubblesort(int A[DIM], int i, int j, int temp, int N);
int main()
{ int A[DIM],i,j=0,N,temp;
cout<<"Inserire dimensione array"<<endl;
cin>>N;
srand(time(NULL));
for(i=0;i<N;i++){
A[i]=rand()%10;
}
for(i=0;i<N;i++)
cout<<A[i]<<" ";
cout<<endl;
cout<<"Algoritmo ordinato"<<endl;
cout<<bubblesort(A,i,j,temp,N);
cout<<endl;
/* cout<<"Grafico delle occorrenze:"<<endl;
for(i=0;i<=N;i++){
j=0;
cout<<A[i];
while(A[i]==A[i+j]){
cout<<" "<<"*";
j++;}
if(A[i]!=A[i+j]){
cout<<endl;
i=i+j-1;
system("PAUSE");
}
}
*/
system("PAUSE");
return 0;
}
int bubblesort(int A[DIM], int i, int j, int temp, int N){
for(i=0;i<N;i++){
for(j=N-2;j>i-1;j--){
if(A[j]>A[j+1]){
temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
}
}
for(i=0;i<N;i++){
cout<<A[i]<<" ";
}
}