( 처음부터 비교를 해서 빼서 맞게 넣어줌 )
서로 인접한 두 원소를 검사하여 정렬하는 알고리즘
→ **인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환**한다.
큰 값이 거품처럼 점점 떠밀려 내려가는 방식.
( 첫 번째 데이터를 오른쪽과 비교 후 크면 다시 바뀐 자리에서부터 오른쪽고 비교 후
끝까지 왔으면 멈춘다. )
-> **자연수** : 1이상의 정수(1,2,3,4,5...)
-> **정수** : 음의정수, 0, 양의 정수로 이루어진 수(-1,-2,-3...0...1,2,3...)
1. 이걸, i번 실행(i는 정렬이 완료된 값)
2. 인접한 두개의 값을 배열의 끝 -1까지 비교하여 자리 변경(j, j+1)

// 인접한 두개의 값을 비교
static void BubbleSort(int[] arr)
{
// i = 배열에서 정렬된 값의 개수
// j = 정렬 시키기 위한 위치 정보
// 1. 인접한두개 비교
// 2. 값 변경
// 3. 언제까지? 배열의 끝까지
// i : 0 // 정렬이 하나도 안됨
// i : 1 // 1개의 값이 정렬이 됨
// i : 2 // 2개의 값이 정렬이 됨
for (int i = 0; i < arr.Length; i++)
{
// j = 배열값 비교
//arr.Length -1 -i인 이유
// -1 : j + 1 값을 사용하기 때문에 길이 초과가 나타남
// -i : i 만큼의 값이 이미 정렬됐기 때문에 해당 데이터는 비교하지 않아도 됨.
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j+1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
최소값의 위치를 구한다 (값을 바꾸기 위하여)
제자리 정렬(in-place sorting) 알고리즘의 하나
→ 입력 배열(정렬되지 않은 값들) 이외에 다른 추가 메모리를 요구하지 않는 정렬 방법
**해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘**
→ 첫번째 순서에는 **첫번째 위치에 가장 최솟값을 넣는다.**
→ 두번째 순서에는 **두번째 위치에 남은 값 중에서의 최소값을 넣는다.
// 1. i부터 배열의 끝까지 최소값의 위치(min)를 구한다. (값을 바꾸기 위해서)
// 2. i번째 값을 min번째 값을 변경**