[D+13] Sort, Bubble Sort
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();
}
}