Cod sursa(job #1362648)

Utilizator OwlreeRobert Badea Owlree Data 26 februarie 2015 14:16:21
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

int main() {

  ifstream in("algsort.in");
  ofstream out("algsort.out");

  int n;
  in >> n;
  int *v = new int[n];

  for (int i = 0; i < n; ++i) {
    in >> v[i];
  }

  int k = n / 2;

  while (k >= 1) {

    for (int i = 0; i < k; ++i) {
      bool did_something = false;
      do {
        did_something = false;
        for (int j = 0; i + j * k < n; ++j) {
          if (i + (j + 1) * k < n) {
            if (v[i + j * k] > v[i + (j + 1) * k]) {
              swap(v[i + j * k], v[i + (j + 1) * k]);
              did_something = true;
            }
          }
        }
      } while(did_something);
    }

    k = k / 2;
  }

  for (int i = 0; i < n; ++i) {
    out << v[i] << " ";
  }
  out << "\n";

  in.close();
  out.close();

  return 0;
}