<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=StartprogrammingusingObjectPascal%3ABubbleSortAlgorithm</id>
	<title>StartprogrammingusingObjectPascal:BubbleSortAlgorithm - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=StartprogrammingusingObjectPascal%3ABubbleSortAlgorithm"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=StartprogrammingusingObjectPascal:BubbleSortAlgorithm&amp;action=history"/>
	<updated>2026-05-01T07:48:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=StartprogrammingusingObjectPascal:BubbleSortAlgorithm&amp;diff=342&amp;oldid=prev</id>
		<title>Onionmixer: SPOP 버블정렬알고리즘 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=StartprogrammingusingObjectPascal:BubbleSortAlgorithm&amp;diff=342&amp;oldid=prev"/>
		<updated>2012-07-26T10:44:28Z</updated>

		<summary type="html">&lt;p&gt;SPOP 버블정렬알고리즘 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===버블 정렬 알고리즘===&lt;br /&gt;
&lt;br /&gt;
이 알고리즘은 단순한 정렬 알고리즘 중 하나입니다. 배열의 첫 번째 요소를 두 번째 요소와 비교해서 오름차순에서는 첫 번째 요소가 두 번째 요소보다 클 경우 서로 바꿉니다. 그 다음 두 번째 요소와 세 번째 요소를 비교하고, 이런식으로 배열의 마지막에 도달하기 전까지 계속 진행합니다. 그 후 배열이 이미 정렬되었다는 의미로 바꾸기 동작이 안 일어날 때까지 이 동작을 반복합니다. &lt;br /&gt;
&lt;br /&gt;
배열에 다음 6개의 값을 지니고 있다고 가정해봅니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
7&lt;br /&gt;
10&lt;br /&gt;
2&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
정렬을 하기 위해 한 바퀴 이상 돌아야 한다는 것을 알 것입니다.&lt;br /&gt;
&lt;br /&gt;
첫 번째 숫자를 두 번째 것과 비교할 것이고 처음 것이 두 번째 것보다 크면 바꾸기 동작이 일어날 것이며, 다섯 번째 요소를 여섯 번째 요소와 비교하기 전까지 두 번째를 세 번째와 비교할 것입니다.&lt;br /&gt;
&lt;br /&gt;
처음 한 바퀴를 돌고 나면 배열은 다음과 같이 될 것입니다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
7&lt;br /&gt;
2&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
3&lt;br /&gt;
10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
두 번째 바퀴 다음순서&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
2&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
3&lt;br /&gt;
7&lt;br /&gt;
10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
세 번째&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
2&lt;br /&gt;
5&lt;br /&gt;
3&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
네 번째&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
네 바퀴를 돌고 나서 정렬된 배열을 얻게 되는데, 네 바퀴 째에서는 바꾸기 동작이 일어나지 않기 때문입니다. 이는 이들 데이터를 정렬하는데 세 바퀴만 도는 것이 필요하지만, 네 번째는 정렬의 발생을 확인하기 위해 사용한다는 것을 의미합니다.&lt;br /&gt;
&lt;br /&gt;
작은 수가 큰 수 위로 거품처럼 떠다니는 것을 눈여겨 보도록 합니다.&lt;br /&gt;
&lt;br /&gt;
다음은 &amp;#039;&amp;#039;버블 정렬&amp;#039;&amp;#039; 프로그램입니다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
program BubbleSortProj;&lt;br /&gt;
&lt;br /&gt;
{$mode objfpc}{$H+}&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
    {$IFDEF UNIX}{$IFDEF UseCThreads}&lt;br /&gt;
    cthreads,&lt;br /&gt;
    {$ENDIF}{$ENDIF}&lt;br /&gt;
    Classes;&lt;br /&gt;
&lt;br /&gt;
procedure BubbleSort(var X: array of Integer);&lt;br /&gt;
var&lt;br /&gt;
    Temp: Integer;&lt;br /&gt;
    i: Integer;&lt;br /&gt;
    Changed: Boolean;&lt;br /&gt;
begin&lt;br /&gt;
    repeat // Outer loop&lt;br /&gt;
        Changed:= False;&lt;br /&gt;
        for i:= 0 to High(X) - 1 do // Inner loop&lt;br /&gt;
            if X[i] &amp;gt; X[i + 1] then&lt;br /&gt;
            begin&lt;br /&gt;
                Temp:= X[i];&lt;br /&gt;
                X[i]:= X[i + 1];&lt;br /&gt;
                X[i + 1]:= Temp;&lt;br /&gt;
                Changed:= True;&lt;br /&gt;
            end;&lt;br /&gt;
    until not Changed;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
    Numbers: array [0 .. 9] of Integer;&lt;br /&gt;
    i: Integer;&lt;br /&gt;
begin&lt;br /&gt;
    Writeln(&amp;#039;Please input 10 random numbers&amp;#039;);&lt;br /&gt;
    for i:= 0 to High(Numbers) do&lt;br /&gt;
    begin&lt;br /&gt;
        Write(&amp;#039;#&amp;#039;, i + 1, &amp;#039;: &amp;#039;);&lt;br /&gt;
        Readln(Numbers[i]);&lt;br /&gt;
    end;&lt;br /&gt;
    BubbleSort(Numbers);&lt;br /&gt;
    Writeln;&lt;br /&gt;
    Writeln(&amp;#039;Numbers after sort: &amp;#039;);&lt;br /&gt;
    for i:= 0 to High(Numbers) do&lt;br /&gt;
    begin&lt;br /&gt;
        Writeln(Numbers[i]);&lt;br /&gt;
    end;&lt;br /&gt;
    Write(&amp;#039;Press enter key to close&amp;#039;);&lt;br /&gt;
    Readln;&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
보다 큰(&amp;gt;) 연산자를 보다 작은(&amp;lt;) 연산자로 바꾸어서 내림차순 정렬로 정렬 방식을 수정할 수 있습니다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
if X[i] &amp;gt; X[i + 1] then&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:StartprogrammingusingObjectPascal]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>