Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11

Внешние сортировки!!!

22.01.2010, 01:15. Показов 2586. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста!!! Очень срочно и очень нужно написать программу для внешней сортировки файла с числами методом перемешивания. Вся моя проблема в том, что я не пойму как работать именно с конкретным элементом в файле, как получить к нему доступ. Если во внешней мы можем сделать к примеру a[i]<a[j], то как это осуществить при внешней сортировке
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2010, 01:15
Ответы с готовыми решениями:

Разработайте рекурсивную процедуру сортировки последовательности методом быстрой сортировки Хоара
Помогите!!!! Дана последовательность чисел a1, a2, ... , an. Разработайте рекурсивную процедуру сортировки последовательности методом...

Написать комментарии, поясняющие принцип сортировки. (Метод сортировки - вставками)
Написать комментарии, поясняющие принцип сортировки. (Метод сортировки - вставками) Если вдруг нужно условие задачи. В двумерном...

Расставить элементы массива в порядке возрастания методом сортировки выбором и сортировки простыми вставками
Здрасьте еще раз!С прошедшим вас праздником! я глупая и бестолковая опять пришла к вам на спасение. задачка вот простенькая, но вся...

16
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
22.01.2010, 01:18
Цитата Сообщение от alzira Посмотреть сообщение
Помогите, пожалуйста!!! Очень срочно и очень нужно написать программу для внешней сортировки файла с числами методом перемешивания. Вся моя проблема в том, что я не пойму как работать именно с конкретным элементом в файле, как получить к нему доступ. Если во внешней мы можем сделать к примеру a[i]<a[j], то как это осуществить при внешней сортировке
так как ты показал сортируется массив, а для того что бы выдернуть определенный элемент из файла есть функция seek, указатель так называемый на позицию в файле и его двигаешь туда сюда и сортируешь
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
22.01.2010, 01:41  [ТС]
Т.е если я напишу
Pascal
1
2
  Seek(fp, 1); 
  Read(fp,x);
то x будет равно второму элементу в файле fp?
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
22.01.2010, 02:11
совершенно верно я смотрю ты быстро просек что счет идет с 0 а не с 1
1
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
22.01.2010, 02:16  [ТС]
Pascal
1
2
3
4
Seek(fp, 1); 
Read(fp,x);
Seek(fp, 2); 
Read(fp,y);
и теперь я могу сравнить x и y?А если мне надо их поменять местами? тогда
Pascal
1
2
3
4
Seek(fp, 1); 
Write(fp,y);
Seek(fp, 2); 
Write(fp,x);
Так?
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
22.01.2010, 03:01
Да
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
22.01.2010, 03:02  [ТС]
спасибо. Очень помог
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
22.01.2010, 03:15
Цитата Сообщение от alzira Посмотреть сообщение
спасибо. Очень помог
Не за что обращайся
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
22.01.2010, 03:29  [ТС]
может подскажет кто. Пытаюсь внутреннюю сортировку выбором переделать во внешнюю. Где-то ошиблась, а где не пойму
внутренняя:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program Celection_Sort;
uses crt;
const N=13;
var
f:text;
A:array [1..N] of integer;
i,j,t,min:integer;
BEGIN
     clrscr;
      ASSIGN(f,'d:\1.txt');
   reset(f);
   for i:=1 to n do
   begin
       Read(f,a[i]);
   end;
   Close(f);
   writeln('массив A(',N,'):');
   for i:=1 to N do write (A[i]:5);
     for i:=1 to N-1 do
     begin
          min:=i;
          for j:=i+1 to N do
              if A[min]>A[j] then
                   min:=j;
          t:=a[i];
          a[i]:=a[min];
          a[min]:=t;
 
     end;
     writeln;
     writeln(' отсортированный массив A(',N,'):');
      for i:=1 to N do write(a[i]:5);
     readkey;
END.
Внешняя:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
var
f:file of integer;
i,j,s,min:integer;
a:array [1..1000]of integer;
BEGIN
     clrscr;
     assign (f,'d:\1.txt');
     reset (f);
     {for i:=0 to 10 do}
     WHILE not eof(f) do
     begin
          seek(f,i); read(f,min);
          WHILE not eof(f) do
          seek(f,j); read(f,s);
          if min>s then
          seek (f,i); write(f,s);
          seek (f,j); write(f,min);
     end;
     close(f);
     readkey;
END.
0
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
22.01.2010, 11:12
у тебя i и j никак не изменяются, они все время имеют одно и тоже значение, напиши везде в конце каждого вайла i = i+1 и j=j+1; только в самом начале программы обнули их
1
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
23.01.2010, 23:52  [ТС]
внесла некоторые изменения. Теперь
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
var
f:file of integer;
i,j,a,b,min:integer;
BEGIN
     clrscr;
     assign (f,'k:\1.txt');
     reset (f);
     for i:=0 to 9 do
     begin
          min:=i;
          for j:=i+1 to 10 do
          seek(f,min); read(f,a);
          seek(f,j); read(f,b);
          if a>b then
          min:=j;
          seek (f,i); write(f,b);
          seek (f,j); write(f,a);
     end;
     close(f);
     readkey;
END.
Но выполняется опять не то, что хотелось бы.
содержание исходного файла : 78 7 2 10 98 5 6 25 61 54 5, а выдает 698 7 5 2615 0 1 2 5784 5. Подскажите, в чем загвоздка
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
24.01.2010, 00:38
alzira, эхх, Вам бы понять где следует ставить связку begin end; а уже только потом писать какие либо сортировки...
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
24.01.2010, 00:45  [ТС]
А что не так с моим begin end? Судя по алгоритму внутренней сортировки выбором, он на месте и больше нигде стоять не должен
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
24.01.2010, 00:53
Вот расставил отступы, как они должны были быть (так виднее что выполняется в каком цикле):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses crt;
var
f:file of integer;
i,j,a,b,min:integer;
begin
  clrscr;
  assign (f,'k:\1.txt');
  reset (f);
  for i:=0 to 9 do
  begin
    min:=i;
    for j:=i+1 to 10 do
      seek(f,min);  {от i+1 до 10 раз считываем одни и теже данные}
    read(f,a);   {все остальные моменты объяснять не буду}
    seek(f,j); 
    read(f,b);
    if a>b then
      min:=j;
    seek (f,i); 
    write(f,b);
    seek (f,j); 
    write(f,a);
  end;
  close(f);
  readkey
END.
Надеюсь Вам всё стало понятно...
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
24.01.2010, 01:18  [ТС]
lexus_ilia, если я правильно поняла вас, то мне нужно взять в рамки begin...end seek(f,min) и min:=j?
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
24.01.2010, 01:23
alzira, нет, не правильно, советую подучить теорию внешних сортировок, а потом хорошенько построить в голове алгоритм, а уже только потом писать саму сортировку.
0
1 / 1 / 1
Регистрация: 21.01.2010
Сообщений: 11
24.01.2010, 02:57  [ТС]
lexus_ilia, может хотя бы на словах что скажете, что не так. Какое именно место нужно изменить. Ей богу, бьюсь-бьюсь никак не могу сообразить, что и как
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2010, 02:57
Помогаю со студенческими работами здесь

Внешние файлы
Создать квадратный массив Ann в файл.txt. Потом из .txt файла считать элементы второго столбца массива и записать их в вектор Vn.

Внешние файлы
Как и что нужно прописать в программе для того, чтоб она считывала начальные данные для матрицы ( а именно- элементы)?

Внешние файлы
Дана матрица целого типа nxn. Записать ее в файл, потом прочитать из него главную и побочную диагональ, и сформировать в вектор. Сделал это...

Внешние подпрограммы
Напишите пожалуйста программу Дан массив А - массив обыкновенных дробей.Вычислить произведение всех дробей,результат представить в...

Задача на внешние файлы
Считать матрицу А из текстового файла,в котором записана матрица B.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru