Advertisement
Dijuna

OuterSort

Sep 27th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <QCoreApplication>
  2. #include <QDebug>
  3.  
  4. struct Object {
  5.     Object(const QString& name, int value) {
  6.         this->name = name;
  7.         this->value = value;
  8.     }
  9.     Object& operator= (const Object& other)
  10.     {
  11.         this->name = other.get_name();
  12.         this->value = other.get_value();
  13.         return *this;
  14.     }
  15.  
  16.     const QString& get_name() const { return name; }
  17.     int get_value() const { return value; }
  18.  
  19. private:
  20.     QString name;
  21.     int value;
  22. };
  23.  
  24. void outersort(const QList<Object>& data, QList<int>& indexes)
  25. {
  26.     int n = indexes.length();
  27.     int i, j;
  28.     for (j = 0; i < n - 1; j++) {
  29.         int iMin = j;
  30.         for (i = j + 1; i < n; i++) {
  31.             int x = data.at(indexes.at(i)).get_value();
  32.             int y = data.at(indexes.at(iMin)).get_value();
  33.             if (x < y) {
  34.                 iMin = i;
  35.             }
  36.         }
  37.         if (iMin != j) {
  38.             indexes.swap(j, iMin);
  39.         }
  40.     }
  41. }
  42.  
  43. int main(int argc, char *argv[])
  44. {
  45.     QCoreApplication a(argc, argv);
  46.  
  47.     QList<Object> objects;
  48.     objects.append(Object("", 2));
  49.     objects.append(Object("Drugi", 3));
  50.     objects.append(Object("Pierwszy", 1));
  51.     objects.append(Object("Czwarty", 6));
  52.     objects.append(Object("", 5));
  53.     objects.append(Object("Trzeci", 4));
  54.  
  55.     QList<int> indexes;
  56.     for (int i = 0; i < objects.length(); ++i) {
  57.         if (objects.at(i).get_name().length() > 0) {
  58.             indexes.append(i);
  59.         }
  60.     }
  61.  
  62.     qDebug() << "Before:" << indexes;
  63.     for (int i = 0; i < indexes.length(); ++i) {
  64.         qDebug() << objects.at(indexes.at(i)).get_name();
  65.     }
  66.  
  67.     outersort(objects, indexes);
  68.  
  69.     qDebug() << "\nAfter:" << indexes;
  70.     for (int i = 0; i < indexes.length(); ++i) {
  71.         qDebug() << objects.at(indexes.at(i)).get_name();
  72.     }
  73.  
  74.     return a.exec();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement