๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+13] Sort, Bubble Sort

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 10. 10.

 

 

Algorithm

-  Sort, Bubble Sort -

 


 

Sort

Sort๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

๋ชฉ์ ) 

- Searching์„ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด์„œ

- ๋ฌด์ฐจ๋ณ„์ ์œผ๋กœ ๋‚˜์—ด๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ณด๋‹ค๋Š” ์–ด๋– ํ•œ ๊ธฐ์ค€์— ๋งž์ถ”์–ด ๋‚˜์—ด๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋ฐ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค.

 

ํŠน์ง•)

โ‘  ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋งŒ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด์ง€ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

โ‘ก ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์ด ์กด์žฌํ•œ๋‹ค. ex) ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ๋“ฑ๋“ฑ...

 

 


Bubble Sort

- ์„œ๋กœ ์ธ์ ‘ํ•œ ์œ„์น˜์— ์žˆ๋Š” ๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

- (๋งˆ์ง€๋ง‰-1)๋ฒˆ์งธ์˜ ๊ฐ’๊ณผ ๋งˆ์ง€๋ง‰๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’์„ ์ตœ์ข…์ ์œผ๋กœ ๋น„๊ตํ•˜๊ณ  ๋‚˜๋ฉด 1ํšŒ์ „์ด ๋๋‚œ๊ฒƒ์ด๋ฉฐ, ์ด๋•Œ ์˜ค๋ฆ„์ฐจ์ˆœ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๊ฐ’์€ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋ฐฐ์น˜๋˜์–ด์žˆ๋‹ค.

- ๋งˆ์ง€๋ง‰์— ๋ฐฐ์น˜๋œ ๊ฐ’์€ ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์ดํ›„์— ๋”์ด์ƒ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค.

- ์–ด๋Š์ •๋„ ํšŒ์ „์„ ๋‹ค ๋Œ๊ณ  ๋‚˜์„œ 1๋ฒˆ์งธ์˜ ๊ฐ’๋งŒ ๋‚จ์„๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†์–ด ๋”์ด์ƒ ๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ด๋Ÿฐ์‹์œผ๋กœ ํ•œ๋ฒˆ ํšŒ์ „์ด ๋์ด ๋‚ ๋•Œ๋งˆ๋‹ค ๋์˜ ๊ฐ’์ด ๊ณ ์ •๋˜๊ณ  ๋”์ด์ƒ ๋น„๊ตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฒ„๋ธ”์ •๋ ฌ์˜ ์ตœ์ข… ๋ชฉ์ ์€ ๋์˜ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

• ๊ตฌํ˜„์ฝ”๋“œ

BubbleSort Class

public class BubbleSort3 {

	// ๋ณ€์ˆ˜ ์„ ์–ธ
	private int[] arr;
	private int sortBy;
	
	///////////////////////////////////////////////////////////////////////////////////
	// Setter
	
	public void setArr(int[] arr)
	{
		this.arr = arr;
	}
	
	public void setSortBy(int sortBy)
	{
		this.sortBy = sortBy;
	}
	
	///////////////////////////////////////////////////////////////////////////////////
	// Getter
	
	public int[] getArr()
	{
		return arr;
	}
	
	public int getSortBy()
	{
		return sortBy;
	}
	
	///////////////////////////////////////////////////////////////////////////////////
	// Check sortBy
	
	public boolean agreeSortBy(int num)
	{
		if((num == 1) || (num == 2))
			return true;
		
		else return false;
	}
	
	///////////////////////////////////////////////////////////////////////////////////
	// Sort
	
	public void startSort()
	{
		if(getSortBy() == 1) ascSort();
		else descSort();
	}
	
	public void ascSort()
	{
		int compareCnt = arr.length - 1;
		int box;
		
		for(int i = 0; i < arr.length - 1; i++)
		{
			for(int j = 0; j < compareCnt; j++)
			{
				if(arr[j] > arr[j+1])
				{
					box = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = box;
				}
			}
			
			compareCnt--;
		}
	}
	
	public void descSort()
	{
		int compareCnt = arr.length - 1;
		int box;
		
		for(int i = 0; i < arr.length - 1; i++)
		{
			for(int j = 0; j < compareCnt; j++)
			{
				if(arr[j] < arr[j+1])
				{
					box = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = box;
				}
			}
			
			compareCnt--;
		}
	}
	
	
	///////////////////////////////////////////////////////////////////////////////////
	// Print arr
	
	public void printArr()
	{
		for(int i = 0; i < arr.length; i++)
		{
			System.out.print(arr[i] + " ");
		}
	}
	
}

 

main()

import java.util.Scanner;

/*
 * 1. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ์‹œ์˜ค
 * ๊ทธ ์ˆซ์ž๋งŒํผ int ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์‹œ์˜ค (์˜ˆ 10์„ ์ž…๋ ฅํ•˜๋ฉด int[10])
 * 2. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ ฌ๊ธฐ์ค€ (์˜ค๋ฆ„์ฐจ์ˆœ/๋‚ด๋ฆผ์ฐจ์ˆœ)์„ ์ž…๋ ฅ๋ฐ›์œผ์‹œ์˜ค 
 * 3. int ๋ฐฐ์—ด์„ 1 ~ 100 ์‚ฌ์ด์˜ ์ž„์˜์˜ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์‹œ์˜ค 
 * 4. ์ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ›์€ ์ •๋ ฌ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ฒ„๋ธ”์†ŒํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹œ์˜ค 
 */

public class Test3 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		BubbleSort3 bs = new BubbleSort3();
		
		// 1> ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์ด์ฆˆ ํฌ๊ธฐ ๋ฐ ์ •๋ ฌ๊ธฐ์ค€ ์ž…๋ ฅ๋ฐ›๊ธฐ 
		
		System.out.print("์›ํ•˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š” : ");
		int size = scan.nextInt();		// ๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ 
		
		System.out.print("์›ํ•˜์‹œ๋Š” ์ •๋ ฌ๊ธฐ์ค€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š” (1: ์˜ค๋ฆ„์ฐจ์ˆœ, 2: ๋‚ด๋ฆผ์ฐจ์ˆœ) : ");
		int sortBy = scan.nextInt();	// ์ •๋ ฌ๊ธฐ์ค€ (1: ์˜ค๋ฆ„์ฐจ์ˆœ, 2: ๋‚ด๋ฆผ์ฐจ์ˆœ)
		
		// ++ ์˜ฌ๋ฐ”๋ฅผ ์ •๋ ฌ๊ธฐ์ค€์„ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ
		
		while(bs.agreeSortBy(sortBy) == false)
		{
			System.out.println("์ •๋ ฌ ๊ธฐ์ค€์„ ๋‹ค์‹œ ํ™•์ธํ•ด์ฃผ์„ธ์š”");
			System.out.println("");
			
			System.out.print("์›ํ•˜์‹œ๋Š” ์ •๋ ฌ๊ธฐ์ค€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š” (1: ์˜ค๋ฆ„์ฐจ์ˆœ, 2: ๋‚ด๋ฆผ์ฐจ์ˆœ) : ");
			sortBy = scan.nextInt();
			
			if(bs.agreeSortBy(sortBy) == true)
				break;
		}

		
		///////////////////////////////////////////////////////////////////////////////////
		// 2> ๋ฐฐ์—ด์— 1 ~ 100 ์‚ฌ์ด์˜ ์ž„์˜์˜๊ฐ’ ์„ค์ •ํ•˜๊ธฐ
		
		int arr[] = new int[size];
		
		for(int i = 0; i < size; i++)
		{
			arr[i] = (int)(Math.random() * 100) + 1;
		}
		
		///////////////////////////////////////////////////////////////////////////////////
		// 3> ํด๋ž˜์Šค๋ฅผ new๋กœ ํž™์— ํ• ๋‹นํ•œ ํ›„ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ
		 
		bs.setSortBy(sortBy);
		bs.setArr(arr);
		bs.startSort();
		
		bs.printArr();
		 
	}

}

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€