【发布时间】:2013-05-08 14:02:50
【问题描述】:
我需要对记录文件进行排序,但我不太确定如何去做。我有一个记录文件,我尝试使用简单的冒泡排序对它们进行排序,但我被卡住了,需要一些帮助。谁能帮助我?我将在下面列出代码。
HighScoreFile = file of HighScoreRecord;
var
frmEnterDetails: TfrmEnterDetails;
HighScoreMasterFile: HighScoreFile;
HighScore:HighScoreRecord;
FileArray:array[1..20] of HighScoreRecord;
i:integer;
Procedure Sort
var
i,j,temp:integer;
AssignFile(HighScoreMasterFile, 'HighScores.dat');
Reset(HighScoreMasterFile);
while not eof(HighScoreMasterFile) do
begin
i:=i+1;
read(HighScoreMasterFile, HighScore);
FileArray[i].Name:=HighScore.Name;
FileArray[i].Date:=HighScore.Date;
FileArray[i].FinalScore:=HighScore.FinalScore;
for i:=0 19 do
for j:=0 to 18 do
if FileArray[j].Score > FileArray[j+1].Score then
begin
FileArray[temp]:=FileArray[j];
FileArray[j]:=FileArray[j+1];
FileArray[j+1]:=FileArray[temp];
end;
end;
任何帮助都会很棒。
【问题讨论】:
-
您的排序过程不完整。
i未初始化。索引FileArray应该在你的 for 循环中从 1 开始。temp从未初始化。i从未在 for 循环中使用。等等 -
您也可以在读取文件期间进行排序。读取整个文件,然后进行排序。
-
谢谢大家的帮助
-
请不要关闭这个帖子,因为我只能在明天的学校测试它
-
有一些小细节可以改进:(1)您可以直接从 HighScoreMasterFile 读取到 FileArray[i],无需 HighScore 变量。 (2) 排序部分可以用'i'代替'temp'。
标签: delphi record pascal bubble-sort