peewoong 2024. 4. 12. 17:28

๐ŸŸฉ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ธ์ ‘ํ•œ ๋‘ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด ๊ตํ™˜ํ•˜์—ฌ ์ •๋ ฌ

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์‹œ ๋Œ์•„์™€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ๋„ ๊ฐ€๋Šฅ

BubbleSort(A[ ], n) {
	for (i=0; i< n-1; i++) // ๋‹จ๊ณ„: (n-1)๋ฒˆ ๋ฐ˜๋ณต
		for (j=0; j < n-1; j++) // ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
			if (A[j] > A[j+1]) // ‘์™ผ์ชฝ ๋ฐ์ดํ„ฐ >์˜ค๋ฅธ์ชฝ ๋ฐ์ดํ„ฐ’์ด๋ฉด
		A[j]์™€ A[j+1]์˜ ์ž๋ฆฌ๋ฐ”๊ฟˆ;
	return (A);
}

 

๐ŸŸฉ ์‹œ๊ฐ„ ๋ณต์žก๋„

for๋ฌธ i (์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ) : 0 ~ (n-2) ๐Ÿ‘‰ (n-1)ํšŒ

for๋ฌธ j (๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ) : ๋™์ผ ๐Ÿ‘‰ (n-1)ํšŒ

์ด ๋น„๊ต ํšŸ์ˆ˜ = O(n^2)

 

๐ŸŸฉ ์„ฑ๋Šฅ

์„ ํƒ ์ •๋ ฌ์— ๋น„ํ•ด ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ๋งŽ์ด ๋ฐœ์ƒ. ์„ ํƒ ์ •๋ ฌ๋ณด๋‹ค ๋น„ํšจ์œจ์ 

๐Ÿ‘‰ ๊ฐ ๋ฃจํ”„์˜ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ ๊ฐœ์„  ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿš€ ๊ฐœ์„ ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ

์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ = ์ฒ˜๋ฆฌ ๋‹จ๊ณ„์˜ ์ˆ˜

์ž๋ฆฌ๋ฐ”๊ฟˆ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ์ด๋ฏ€๋กœ ์ดํ›„์˜ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ

 

๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ = ์ธ์ ‘ํ•œ ๋‘ ๋ฐ์ดํ„ฐ์˜ ๋น„๊ต ํšŸ์ˆ˜

๊ฐ ๋‹จ๊ณ„์—์„œ ๋ฌด์กฐ๊ฑด ์˜ค๋ฅธ์ชฝ/์™ผ์ชฝ ๋๊นŒ์ง€ ์ด๋™ํ•˜๋ฉด์„œ ์ธ์ ‘ํ•œ ๋‘ ๋ฐ์ดํ„ฐ์˜ ๋น„๊ต๊ฐ€ ๋ถˆํ•„์š”

๐Ÿ‘‰ ์ด๋ฏธ ์ œ์ž๋ฆฌ๋ฅผ ์žก์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

Advanced_BubbleSort(A[ ], n) {
	for (i=0; i< n-1; i++) { // ๋‹จ๊ณ„: 0, 1, โ‹ฏ, (n-2)
		Sorted= TRUE;// ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋ผ๊ณ  ๊ฐ€์ •
		for (j=0; j < (n-1)-i; j++) // ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
			if (A[j] > A[j+1]) {
				A[j]์™€ A[j+1]์˜ ์ž๋ฆฌ๋ฐ”๊ฟˆ;
				Sorted= FALSE;// ์ž๋ฆฌ๋ฐ”๊ฟˆ ๋ฐœ์ƒ → ๋ฏธ์ •๋ ฌ ์ƒํƒœ
			}
			if (Sorted== TRUE) break;// ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ์ด๋ฏ€๋กœ ์ข…๋ฃŒ
	} 
    return (A);
}

 

๐ŸŸฉ ๊ฐœ์„ ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„

O(n^2)๋กœ ๋™์ผ

 

cf. ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ(์ตœ์•…์˜ ๊ฒฝ์šฐ) : O(n^2)

cf. ์›ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ : O(n)