Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2015, 21:48   #1
DoctorEho
Новичок
Джуниор
 
Регистрация: 03.12.2015
Сообщений: 1
По умолчанию Сортировка Естественным Слиянием (SortMerge) на Java

Доброго времени суток! Столкнулся с такой проблемой, написал простенькую сортировку слиянием. И в принципе она работает, но не на всех комбинациях чисел! Если быть точным, то она перестает работать, если элементов в файле меньше 5... Сколько не пытаюсь найти ошибку не получается.... Аналитически ошибку тоже выявить не удалось. Если не трудно, помогите советом =)
Вот код :
Код:
import java.io.*;
import java.util.*;
public class Core {
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("f.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        File file1 = new File("f1.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        File file2 = new File("f2.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        int x_1;
        int x_2;
        int x;
        int flag;
 
        for (; ; ) {
 
                Scanner scan = new Scanner(file);
                PrintWriter out_1 = new PrintWriter(file1);
                PrintWriter out_2 = new PrintWriter(file2);
                flag = 1;
                x_1 = scan.nextInt();
                out_1.print(x_1 + " ");
                while (scan.hasNextInt()) {
                    x_2 = scan.nextInt();
                    if (x_1 > x_2) {
                        if (flag == 1) flag = 2;
                        else if (flag == 2) flag = 1;
                    }
                    if (flag == 1) out_1.print(x_2 + " ");
                    else out_2.print(x_2 + " ");
                    x_1 = x_2;
                }
                out_1.close();
                out_2.close();
                if (file.length() == file1.length()) break;
                Scanner scan_1 = new Scanner(file1);
                Scanner scan_2 = new Scanner(file2);
                x_1 = scan_1.nextInt();
                x_2 = scan_2.nextInt();
                PrintWriter out = new PrintWriter(file);
                while (scan_1.hasNextInt() && scan_2.hasNextInt()) {
                    if (!scan_1.hasNextInt()) out.print(x_1 + " ");
                    if (!scan_2.hasNextInt()) out.print(x_2 + " ");
                    if (x_1 <= x_2) {
                        out.print(x_1 + " ");
                        x_1 = scan_1.nextInt();
                    } else {
                        out.print(x_2 + " ");
                        x_2 = scan_2.nextInt();
                    }
 
                }
                while (scan_1.hasNextInt()) {
                    x = x_1;
                    x_1 = scan_1.nextInt();
                    out.print(x + " ");
                    if (!scan_1.hasNextInt()) out.print(x_1 + " ");
                }
                while (scan_2.hasNextInt()) {
                    x = x_2;
                    x_2 = scan_2.nextInt();
                    out.print(x + " ");
                    if (!scan_2.hasNextInt()) out.print(x_2 + " ");
                }
                out.close();
            }
        }
    }
Заранее благодарю! =)

Последний раз редактировалось DoctorEho; 03.12.2015 в 21:53.
DoctorEho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка естественным слиянием (Нафаня) Помощь студентам 8 07.05.2013 08:05
Сортировка естественным слиянием TCH Помощь студентам 3 09.03.2011 20:44
Однофазная сортировка естественным слиянием dima154 Помощь студентам 0 20.11.2009 00:12
сортировка естественным слиянием ArtFul777 Паскаль, Turbo Pascal, PascalABC.NET 1 18.11.2008 19:36