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();
}
}
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+15] ๋ฉ๋ชจ๋ฆฌ๋งต ๋ณต์ต, ํด๋์ค(์์ฑ์, static) (0) | 2022.10.12 |
---|---|
[D+14] ํด๋์ค, ์ถ์ํ, ์ฐธ์กฐํ์ ์์๋ณ์ (0) | 2022.10.11 |
[D+13] ์ฝ๋ฉ๋ฐ์ด (0) | 2022.10.10 |
[D+12] class ํด๋์ค (1) | 2022.10.05 |
[D+11] ์ฐธ์กฐํ์ (0) | 2022.10.04 |
๋๊ธ