Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <chrono>
- #include <ctime>
- #include <random>
- using namespace std;
- #include "../../min_max/utility_vettori.h"
- using namespace std;
- struct Dati {
- unsigned long chiave_ordinamento;
- double v[1000];
- };
- void bubble_sort_stringhe_indiretto(string v[], int indice[], int numero_elementi)
- {
- for(int i = 0; i < numero_elementi; i++)
- {
- bool fatti_scambi = false;
- for(int j = 0; j < numero_elementi - i - 1; j++)
- if (v[indice[j]] > v[indice[j + 1]])
- { swap(indice[j], indice[j + 1]);fatti_scambi=true;}
- if (!fatti_scambi) break;
- }
- }
- void bubble_sort_stringhe(string v[], int numero_elementi)
- {
- for(int i = 0; i < numero_elementi; i++)
- {
- bool fatti_scambi = false;
- for(int j = 0; j < numero_elementi - i - 1; j++)
- if (v[j] > v[j + 1])
- { swap(v[j], v[j + 1]);fatti_scambi=true;}
- if (!fatti_scambi) break;
- }
- }
- void stampa_vettore_stringhe_indiretto(string v[], int indice[], int QUANTI_ELEMENTI)
- {
- for (int i=0; i<QUANTI_ELEMENTI; i++)
- cout << v[indice[i]] << endl;
- }
- void carica_vettore_Dati(Dati v[], long dimensione)
- {
- mt19937 twister{time(0)};
- for (long i=0; i<dimensione; i++)
- v[i].chiave_ordinamento = twister();
- }
- void bubble_sort_Dati(Dati v[], int numero_elementi)
- {
- for(int i = 0; i < numero_elementi; i++)
- {
- bool fatti_scambi = false;
- for(int j = 0; j < numero_elementi - i - 1; j++)
- if (v[j].chiave_ordinamento > v[j + 1].chiave_ordinamento)
- { swap(v[j], v[j + 1]); fatti_scambi=true;}
- if (!fatti_scambi) break;
- }
- }
- void bubble_sort_Dati_indiretto(Dati v[], int indice[], int numero_elementi)
- {
- for(int i = 0; i < numero_elementi; i++)
- {
- bool fatti_scambi = false;
- for(int j = 0; j < numero_elementi - i - 1; j++)
- if (v[indice[j]].chiave_ordinamento > v[indice[j + 1]].chiave_ordinamento)
- { swap(indice[j], indice[j + 1]); fatti_scambi=true;}
- if (!fatti_scambi) break;
- }
- }
- const int QUANTI_ELEMENTI = 10000;
- const int LUNGHEZZA = 10000;
- string v[QUANTI_ELEMENTI];
- int indice[QUANTI_ELEMENTI];
- Dati vDati[QUANTI_ELEMENTI];
- int main()
- {
- cout << sizeof(string) << endl;
- cout << "Genero vettore ...\n";
- //carica_vettore_stringhe(v, QUANTI_ELEMENTI, LUNGHEZZA);
- carica_vettore_Dati(vDati, QUANTI_ELEMENTI);
- //prepara indice
- for (int i=0; i<QUANTI_ELEMENTI; i++) indice[i] = i;
- cout << "Parto con il sort ...\n";
- Cronometro(Stato::START);
- bubble_sort_Dati(vDati, QUANTI_ELEMENTI);
- cout << "Tempo impiegato: " << Cronometro(Stato::STOP) << endl;
- //stampa_vettore_stringhe(v, QUANTI_ELEMENTI);
- //stampa_vettore_stringhe_indiretto(v, indice, QUANTI_ELEMENTI);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement