如何使用pascal中的插入排序对记录文件进行排序?

时间:2013-04-27 22:02:41

标签: file record pascal insertion-sort

所以我有一个.dat文件,其中包含大约20条记录。记录的字段是:名称,日期和分数,我想按分数对记录进行排序,以便我可以在高分表中显示它们。我不确定如何实现排序,所以任何帮助都会很棒。感谢

1 个答案:

答案 0 :(得分:0)

将文件读入记录数组,将每条记录插入正确的位置。然后将数组写回文件。

以下是未经测试的代码,写在我的头顶。关键行已经标记为// ** - 第一行找到新读取记录的正确位置,第二行突破该地点的所有记录。

const
 maxrec = 50;

type
 MyRecord = record
             name: string[63];
             date: tdatetime;
             score: integer
            end;

var
 myfile: file of myrecord;
 rec: myrecord;
 data: array [1..maxrec] of myrecord;
 i, j, count: integer;

begin
 fillchar (data, sizeof (data), 0);
 assignfile (myfile, '.....');
 reset (myfile);
 read (myfile, rec);
 count:= 0;
 while not eof (myfile) do 
  begin
   i:= 1;
   while (i <= count) and (rec.score > data[i].score) do inc (i);   //**
   for j:= i to count do data[j+1]:= data[j];                       //**
   data[i]:= rec;
   inc (count);
  end;

 closefile (myfile);
 assignfile (myfile, '.......');
 rewrite (myfile);
 for i:= 1 to count do write (myfile, data[i]);
 closefile (myfile);
end;