<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC</id>
	<title>거품 정렬 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC&amp;action=history"/>
	<updated>2026-07-21T04:33:00Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC&amp;diff=106821&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC&amp;diff=106821&amp;oldid=prev"/>
		<updated>2023-03-28T06:09:30Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
&amp;lt;code&amp;gt;Bubble Sort&amp;lt;/code&amp;gt;는 인접한 두 수를 비교하여 큰 수를 뒤로 보내는 간단한 정렬 알고리즘으로 &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt;의 시간 복잡도를 갖는다. 다른 정렬 알고리즘에 비해 속도가 상당히 느린 편&amp;lt;ref&amp;gt;일반적으로 가장 빠른 정렬 알고리즘은 &amp;lt;code&amp;gt;Quick Sort&amp;lt;/code&amp;gt;로 시간 복잡도 &amp;lt;math&amp;gt;O(nlogn)&amp;lt;/math&amp;gt; 이다.&amp;lt;/ref&amp;gt;이지만, 코드가 단순하기 때문에 자주 사용된다.&lt;br /&gt;
&lt;br /&gt;
원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 &amp;lt;code&amp;gt;Bubble Sort&amp;lt;/code&amp;gt;라는 이름을 가지게 되었다.&lt;br /&gt;
&lt;br /&gt;
== 정렬 과정 ==&lt;br /&gt;
다음과 같이 다섯 개의 숫자가 주어졌을 때, &amp;lt;code&amp;gt;Bubble Sort&amp;lt;/code&amp;gt;로 정렬하는 방법은 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 5 || 3 || 7 || 9 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 첫번째 순회 ===&lt;br /&gt;
&lt;br /&gt;
1. 먼저 &amp;#039;&amp;#039;&amp;#039;5와 3 을 비교했을때 3보다 5가 더 큰 수 이므로, 두 수의 자리를 교체&amp;#039;&amp;#039;&amp;#039;한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 전&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || 7 || 9 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 후&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || 7 || 9 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. 다음, &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한 칸 이동하여 5와 7을 비교&amp;#039;&amp;#039;&amp;#039;한다. 여기서는 이미 큰 수 (7) 가 뒤에 있으므로 교체하지 않는다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || 9 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. 다시 &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한 칸 이동하여 7와 9을 비교&amp;#039;&amp;#039;&amp;#039;한다. 여기서도 이미 큰 수 (9) 가 뒤에 있으므로 교체하지 않는다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt; || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 다시 &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한 칸 이동하여 9와 1을 비교&amp;#039;&amp;#039;한다. 9가 1보다 더 큰 수 이므로, 두 수의 자리를 교체한다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || 7 || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 첫번째 순회 정리 ====&lt;br /&gt;
한 번의 순회가 끝났다. 모든 원소를 한 번 씩 들러본 결과, 다섯 개의 숫자 중 가장 큰 수인 9가 파도처럼 밀려 맨 마지막, 즉 정렬이 완료 되었을 때의 자신의 자리를 찾아갔다.&lt;br /&gt;
&lt;br /&gt;
여기서 다음번 순회 부터는 모든 원소를 방문할 필요가 없다.&amp;lt;ref&amp;gt;가장 큰 수 9는 정렬 된 후 자신이 있어야 할 위치에 도착했기 때문&amp;lt;/ref&amp;gt;&lt;br /&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;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;를 제외한 원소들을 처음부터 다시 반복하여 비교해 보자.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || 7 || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. &amp;#039;&amp;#039;&amp;#039;3과 5 를 비교&amp;#039;&amp;#039;&amp;#039;했을 때 이미 큰 수( 5 ) 가 뒤에 있으므로 자리를 교체하지 않는다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || 7 || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. 다음 &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한 칸 이동하여 5와 7을 비교&amp;#039;&amp;#039;&amp;#039;한다. 이미 큰 수( 7 ) 가 뒤에 있으므로 교체하지 않는다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. 다시 &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한 칸 이동하여 7와 1을 비교&amp;#039;&amp;#039;&amp;#039;합니다. &amp;#039;&amp;#039;&amp;#039;7이 1보다 더 큰 수 이므로, 두 수의 자리를 교체&amp;#039;&amp;#039;&amp;#039;한다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 전&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 후&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 두번째 순회 정리 ====&lt;br /&gt;
두 번째 순회가 완료 되었다. 남은 네 개의 원소 중 가장 큰 수인 &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039;이 자신의 자리를 찾아갔다.&lt;br /&gt;
&lt;br /&gt;
=== 세번째 순회 ===&lt;br /&gt;
나머지 세 개의 원소들을 다시 처음부터 순회해 준다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 5 || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. &amp;#039;&amp;#039;&amp;#039;3과 5 를 비교&amp;#039;&amp;#039;&amp;#039;했을때 이미 큰 수( 5 ) 가 뒤에 있으므로 자리를 교체하지 않는다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. 다음 &amp;#039;&amp;#039;&amp;#039;오른쪽으로 한칸 이동하여 5와 1을 비교&amp;#039;&amp;#039;&amp;#039;한다. &amp;#039;&amp;#039;&amp;#039;5가 1보다 더 큰 수 이므로, 두 수의 자리를 교체&amp;#039;&amp;#039;&amp;#039;해 준다.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 전&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 후&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 세번째 순회 정리 ====&lt;br /&gt;
세번째 순회가 완료 되었다. 남은 세 개의 원소 중 가장 큰 수인 &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|5}}&amp;#039;&amp;#039;&amp;#039;가 자신의 자리를 찾아갔다.&lt;br /&gt;
&lt;br /&gt;
=== 네번째 순회 ===&lt;br /&gt;
나머지 두 개의 원소들을 다시 처음부터 순회해 준다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || 3 || 1 || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|5}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. &amp;#039;&amp;#039;&amp;#039;3과 1을 비교&amp;#039;&amp;#039;&amp;#039;한다. &amp;#039;&amp;#039;&amp;#039;3이 1보다 더 큰 수 이므로, 두 수의 자리를 교체&amp;#039;&amp;#039;&amp;#039;해 준다.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 전&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|5}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;교체 후&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 인덱스 !! 0 !! 1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
| 값 || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|5}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|7}}&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;{{글씨 색|white|black|9}}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&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;&amp;#039;&amp;#039;에, 전체 원소의 개수가 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;개 라고 할 때, 총 &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt;번 순회하면 정렬이 끝난다.&lt;br /&gt;
&lt;br /&gt;
위의 예제에서는 총 원소 개수가 5개 이므로, &amp;lt;math&amp;gt;4 + 3 + 2 + 1 = 10&amp;lt;/math&amp;gt;번 비교하게 된다. 이를 수식으로 일반화 시키면 다음과 같다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;(n-1)+(n-2)+...+2+1=(n-1) \times n \div 2 = \frac{n(n-1)}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 자리 교환 횟수 ===&lt;br /&gt;
최선의 경우&amp;lt;ref&amp;gt;이미 정렬된 원소들이 주어진 경우&amp;lt;/ref&amp;gt;, 자리 교환이 한번도 이루어 지지 않으므로, 시간복잡도에 영향을 미치지 않게 된다.&lt;br /&gt;
&lt;br /&gt;
하지만 최악의 경우&amp;lt;ref&amp;gt;역순으로 정렬된 원소들이 주어진 경우&amp;lt;/ref&amp;gt;, 원소를 비교 할 때마다 자리 교환이 일어나므로, 자리 교환 횟수 또한 비교 횟수와 같이 &amp;lt;math&amp;gt;\frac{n(n-1)}{2}&amp;lt;/math&amp;gt; 가 된다.&lt;br /&gt;
&lt;br /&gt;
따라서 평균적으로 &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; 의 시간복잡도를 가지게 된다.&lt;br /&gt;
&lt;br /&gt;
== 코드 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;순회할 원소의 개수가 하나씩 줄어든다는 점&amp;#039;&amp;#039;&amp;#039;을 적용한 코드 예제이다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    int N = 5; //배열의 길이&lt;br /&gt;
    int i, j, temp;&lt;br /&gt;
    int data[] = { 5, 3, 7, 9, 1 };&lt;br /&gt;
&lt;br /&gt;
    // Bubble Sort &lt;br /&gt;
    for (i = 0; i &amp;lt; N; i++) {&lt;br /&gt;
        for (j = 0; j &amp;lt; N-(i+1); j++) {&lt;br /&gt;
            if (data[j] &amp;gt; data[j+1]) {&lt;br /&gt;
                // 자리교환&lt;br /&gt;
                temp = data[j+1];&lt;br /&gt;
                data[j+1] = data[j];&lt;br /&gt;
                data[j] = temp;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 정리 ==&lt;br /&gt;
&amp;lt;code&amp;gt;Bubble Sort&amp;lt;/code&amp;gt;는 이처럼 이해하기도 쉽고 코드도 단순하지만, 이라는 시간복잡도 때문에 비교할 데이터의 개수가 많을 수록 성능이 저하된다.&lt;br /&gt;
&lt;br /&gt;
예제에서는 원소의 개수가 5개 뿐이라 10번의 연산만 하면 되었지만, 데이터의 개수가 만 개만 되어도 무려 &amp;#039;&amp;#039;&amp;#039;약 오천만 번&amp;#039;&amp;#039;&amp;#039;의 비교 연산을 필요로 하기 때문에 &amp;lt;code&amp;gt;Bubble Sort&amp;lt;/code&amp;gt;는 데이터의 개수가 적은 경우에 주로 사용하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
[https://bowbowbow.tistory.com/10 CC BY로 가져옴]&lt;br /&gt;
&lt;br /&gt;
== 각주 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--분류--&amp;gt;&lt;br /&gt;
[[분류:알고리즘]] [[분류:정렬]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>