/* sorts.cpp * * A program paraméterként megadott értékek alapján előállít meghatározott mennyiségű * véletlen számot és ezt a kiválasztott algoritmus szerint rendezi. * A meghívható algoritmusok a következőek: * 1 - Beszurasos rendezés * 2 - Egyszeru kivalasztasos rendezés * 3 - Minimum kivalasztasos rendezés * 4 - Buborekos rendezés * * * * fordítás: g++ sorts.cpp -o sorts * futtatás: ./sorts [random elemek száma] [1-4 rendező algoritmus] * * tipp: sebessség mérés pl.: time ./sorts 40000 1 >> /dev/null */ #include #include #include using namespace std; // Beszurasos rendezes void insSort(vector &vect) { for(int i = 1; i != vect.size(); i++) { int tmp = vect[i]; int j = i - 1; while(j >= 0 && vect[j] > tmp) { vect[j+1] = vect[j]; j--; } vect[j+1] = tmp; } } // Egyszeru kivalasztasos rendezes void simpSort(vector &vect) { for(int i = 0; i != vect.size() - 1; i++) for(int j = i+1; j != vect.size(); j++) if (vect[j] < vect[i]) swap(vect[i],vect[j]); } // Minimum kivalasztasos rendezes void minSort(vector &vect) { for(int i = 0; i != vect.size() - 1; i++) { int min_index = i; int j = i + 1; for(; j != vect.size(); j++) if (vect[j] < vect[min_index]) min_index = j; if (i != min_index) swap(vect[i], vect[min_index]); } } // Buborekos rendezes void bubbleSort(vector &vect) { for(int i = vect.size() - 1; i >= 0; i--) for(int j = 0; j != i; j++) if(vect[j] > vect[j+1]) swap(vect[j], vect[j+1]); } void print(const vector & vect) { typedef vector::const_iterator intIt; for(intIt ii = vect.begin(); ii != vect.end(); ii++) cout << (ii != vect.begin() ? ", " : "") << *ii; } int main(int argc, char *argv[]) { cout << argv[0] << endl; if (argc != 3) return 1; const int initSize = atoi(argv[1]); vector vect(initSize); typedef vector::iterator intIt; srand(time(NULL)); for(intIt ii = vect.begin(); ii != vect.end(); ii++) *ii = rand()%64; cout << "Rendezetlen: "; print(vect); switch (argv[2][0]) { case '1': insSort(vect); break; case '2': simpSort(vect); break; case '3': minSort(vect); break; case '4': minSort(vect); break; default: cout << "Nem letezo rendezo algoritmus!" << endl; return 1; } cout << "\nRendezett: "; print(vect); cout << endl; return 0; }