|
Ordencao_exemplo 1.0
|
00001 00002 00009 #ifndef SORT_H_ 00010 #define SORT_H_ 00011 00012 #include "Problema.h" 00013 #include "Vetor.h" 00014 #include "Solucao.h" 00015 00016 class Sort :public Problema { 00017 private: 00018 int valorPequeno; 00019 protected: 00020 Vetor* vetorDesordenado; 00021 int indPrim, 00022 indUlt; 00023 public: 00025 Sort( int, Vetor*, int, int ); 00027 virtual ~Sort(); 00029 00034 void geraSolucao( Solucao& ) const; 00036 virtual void divide( Solucao&, vector<Problema*>&, vector<Solucao*>& ) const = 0; 00038 virtual void combina( vector<Solucao*>&, Solucao* ) const = 0; 00040 00043 int ehPequeno() const; 00045 virtual void limpaSub( vector<Problema*>& ) const = 0; 00047 /* 00048 * Este método ordena do indPrim até o indUlt. 00049 * Inicialmente compara as duas primeiras posições, depois vai aumentando o tamanho uma a uma, como se fossem cartas. 00050 * Compara as últimas cartas colocando sempre a menor pra frente. Analogamente como uma armação de um baralho de cartas. 00051 * Têm complexidade O(n²). 00052 */ 00053 void insertSort( Solucao& s ) const; 00055 int valorPeq() const; 00056 }; 00057 00058 #endif /* SORT_H_ */