https://trans.onionmixer.net/mediawiki/index.php?title=StartprogrammingusingObjectPascal:SelectionSortAlgorithm&feed=atom&action=historyStartprogrammingusingObjectPascal:SelectionSortAlgorithm - Revision history2024-03-29T15:17:04ZRevision history for this page on the wikiMediaWiki 1.38.1https://trans.onionmixer.net/mediawiki/index.php?title=StartprogrammingusingObjectPascal:SelectionSortAlgorithm&diff=346&oldid=prevOnionmixer: SPOP 선택정렬알고리즘 페이지 추가2012-07-26T10:57:21Z<p>SPOP 선택정렬알고리즘 페이지 추가</p>
<p><b>New page</b></p><div>===선택 정렬 알고리즘===<br />
<br />
이 유형의 정렬은 버블 정렬과 유사하지만, 많은 양의 데이터에 대해 더 빠릅니다. 외부 순환문과 내부 순환문 두 개의 순환문이 있습니다. 내부 순환문은, 두 바퀴가 남기 전까지 외부 순환문을 돌 때마다 순환 횟수가 감소합니다.<br />
<br />
<syntaxhighlight lang="pascal"><br />
program SelectionSort;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
uses<br />
{$IFDEF UNIX}{$IFDEF UseCThreads}<br />
cthreads,<br />
{$ENDIF}{$ENDIF}<br />
Classes<br />
{ you can add units after this };<br />
<br />
procedure SelectSort(var X: array of Integer);<br />
var<br />
i: Integer;<br />
j: Integer;<br />
SmallPos: Integer;<br />
Smallest: Integer;<br />
begin<br />
for i:= 0 to High(X) -1 do // Outer loop<br />
begin<br />
SmallPos:= i;<br />
Smallest:= X[SmallPos];<br />
for j:= i + 1 to High(X) do // Inner loop<br />
if X[j] < Smallest then<br />
begin<br />
SmallPos:= j;<br />
Smallest:= X[SmallPos];<br />
end;<br />
X[SmallPos]:= X[i];<br />
X[i]:= Smallest;<br />
end;<br />
end;<br />
<br />
// Main application<br />
var<br />
Numbers: array [0 .. 9] of Integer;<br />
i: Integer;<br />
begin<br />
Writeln('Please input 10 random numbers');<br />
for i:= 0 to High(Numbers) do<br />
begin<br />
Write('#', i + 1, ': ');<br />
Readln(Numbers[i]);<br />
end;<br />
SelectSort(Numbers);<br />
Writeln;<br />
Writeln('Numbers after Selection sort: ');<br />
for i:= 0 to High(Numbers) do<br />
begin<br />
Writeln(Numbers[i]);<br />
end;<br />
Write('Press enter key to close');<br />
Readln;<br />
end.<br />
</syntaxhighlight><br />
<br />
''버블 정렬''보다 빠름에도 불구하고, ''선택 정렬''은 데이터 초기 정렬과 관계 없이 같은 순환횟수를 지니는 반면에, ''버블 정렬''은 데이터가 정렬되었거나 약간 정렬된 경우 빨라(적은 외부 순환 횟수)집니다.<br />
[[Category:StartprogrammingusingObjectPascal]]</div>Onionmixer