Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <time.h>
- #include <fstream>
- using namespace std;
- class Global {
- private:
- int *arr, count_sr, count_perest;
- public:
- Global(int n) {
- arr = new int[n];
- for (int i = 0; i < n; i++)
- arr[i] = rand() % 99 + 1;
- }
- void sort_(int n) {
- sort(arr, arr + n);
- }
- void write_to_f(int n, ofstream &out) {
- for (int i = 0; i < n; i++)
- out << arr[i] << ' ';
- out << ' ';
- out.close();
- }
- void show_arr(int n) {
- for (int i = 0; i < n; i++)
- cout << arr[i] << ' ';
- cout << '\n';
- }
- void read_in_f(int n, ifstream &in) {
- for (int i = 0; i < n; i++)
- in >> arr[i];
- in.close();
- }
- //Описание функции сортировки простым слиянием
- void Simple_Merging_Sort(char *name) {
- int a1, a2, k, i, j, kol, tmp;
- FILE *f, *f1, *f2;
- kol = 0;
- if ((f = fopen(name, "r")) == NULL)
- printf("\nИсходный файл не может быть прочитан...");
- else {
- while (!feof(f)) {
- fscanf(f, "%d", &a1);
- kol++;
- }
- fclose(f);
- }
- k = 1;
- while (k < kol) {
- f = fopen(name, "r");
- f1 = fopen("smsort_1", "w");
- f2 = fopen("smsort_2", "w");
- if (!feof(f)) fscanf(f, "%d", &a1);
- while (!feof(f)) {
- for (i = 0; i < k && !feof(f); i++) {
- fprintf(f1, "%d ", a1);
- fscanf(f, "%d", &a1);
- }
- for (j = 0; j < k && !feof(f); j++) {
- fprintf(f2, "%d ", a1);
- fscanf(f, "%d", &a1);
- }
- }
- fclose(f2);
- fclose(f1);
- fclose(f);
- f = fopen(name, "w");
- f1 = fopen("smsort_1", "r");
- f2 = fopen("smsort_2", "r");
- if (!feof(f1)) fscanf(f1, "%d", &a1);
- if (!feof(f2)) fscanf(f2, "%d", &a2);
- while (!feof(f1) && !feof(f2)) {
- i = 0;
- j = 0;
- while (i < k && j < k && !feof(f1) && !feof(f2)) {
- if (a1 > a2) {
- fprintf(f, "%d ", a1);
- fscanf(f1, "%d", &a1);
- i++;
- }
- else {
- fprintf(f, "%d ", a2);
- fscanf(f2, "%d", &a2);
- j++;
- }
- }
- while (i < k && !feof(f1)) {
- fprintf(f, "%d ", a1);
- fscanf(f1, "%d", &a1);
- i++;
- }
- while (j < k && !feof(f2)) {
- fprintf(f, "%d ", a2);
- fscanf(f2, "%d", &a2);
- j++;
- }
- }
- while (!feof(f1)) {
- fprintf(f, "%d ", a1);
- fscanf(f1, "%d", &a1);
- }
- while (!feof(f2)) {
- fprintf(f, "%d ", a2);
- fscanf(f2, "%d", &a2);
- }
- fclose(f2);
- fclose(f1);
- fclose(f);
- k *= 2;
- }cout << "kol-vo sr - " << i << '\n';
- cout << "kol vo perest - " << j << '\n';
- remove("smsort_1");
- remove("smsort_2");
- }
- ~Global() {
- delete[] arr;
- }
- };
- int main() {
- srand(time(0));
- ofstream out("2.txt");
- ifstream in("2.txt");
- int n(0);
- cout << "Enter size of array: ";
- cin >> n;
- Global obj(n);
- obj.sort_(n);
- cout << "Source array: ";
- obj.show_arr(n);
- obj.write_to_f(n, out);
- obj.Simple_Merging_Sort("2.txt");
- obj.read_in_f(n, in);
- cout << "Change array: ";
- obj.show_arr(n);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement