StartprogrammingusingObjectPascal:SortingStudentsMarks
학생 성적 정렬하기
program smSort; // Students marks sort
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
type
TStudent = record
StudentName: string;
Mark: Byte;
end;
procedure BubbleSort(var X: array of TStudent);
var
Temp: TStudent;
i: Integer;
Changed: Boolean;
begin
repeat
Changed:= False;
for i:= 0 to High(X) - 1 do
if X[i].Mark < X[i + 1].Mark then
begin
Temp:= X[i];
X[i]:= X[i + 1];
X[i + 1]:= Temp;
Changed:= True;
end;
until not Changed;
end;
var
Students: array [0 .. 9] of TStudent;
i: Integer;
begin
Writeln('Please input 10 student names and marks');
for i:= 0 to High(Students) do
begin
Write('Student #', i + 1, ' name : ');
Readln(Students[i].StudentName);
Write('Student #', i + 1, ' mark : ');
Readln(Students[i].Mark);
Writeln;
end;
BubbleSort(Students);
Writeln;
Writeln('Marks after Bubble sort: ');
Writeln('----------------------');
for i:= 0 to High(Students) do
begin
Writeln('# ', i + 1, ' ', Students[i].StudentName,
' with mark (', Students[i].Mark, ')');
end;
Write('Press enter key to close');
Readln;
end.
버블 정렬 알고리즘은 매우 단순하고, 프로그래머가 기억할 수 있습니다. 오직 데이터양이 적고 거의 정렬된 상태일 경우에만 적당합니다. 정렬되지 않은 많은 양의 데이터가 있다면 긴 시간이 걸리게 될 것이며, 다른 알고리즘을 사용하는 것이 더 좋습니다.