<버블정렬>
-안정적인 정렬 알고리즘
-배열이 부분적으로 정렬될 경우 효율적
-큰 데이터를 정렬하는데 대해서는 비효율적
-요즘 뜨고 있는 정렬;;
왜? 배달봇이나 드론의 경우 앞에 장애물이 있을 경우, 빠른 판단이 필요하기 때문에 새롭게 뜨고 있음
-한바퀴 돌때 , 가장 큰 수가 제자리를 찾는다
두번째, 그 다음 큰 수가 제자리를 찾는다
(코드는 리뷰에)
<선택정렬>
-한번에 하나씩 최소값을 찾아서 교환하는 방식
-큰 데이터를 정렬하는데 비효율적
-한바퀴 돌떄 가장 작은 값이 제자리를 찾는다
그다음에는 두번째로 작은 값이 제자리를 찾는다
public class Selection {
public static void main(String[] args) {
int[] arr = {8, 7, 6, 5, 4, 5, 1, 4}; // 정렬할 배열
// 선택 정렬 알고리즘
for (int i = 0; i < arr.length - 1; i++) {
// 현재 위치에서 가장 작은 값을 찾기 위한 변수
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 가장 작은 값과 현재 위치의 값을 교환
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}
<삽입정렬>
- 배열을 왼쪽부터 오른쪽으로 탐색하면서 이미 정렬된 부분에 적절한 위치에 삽입하는 방식의 알고리즘
-배열이 거의 정렬된 상태에서는 효율
public class Insertion {
public static void main(String[] args) {
int[] arr = {8, 7, 6, 5, 4, 5, 1, 4}; // 정렬할 배열
// 삽입 정렬 알고리즘
for (int i = 1; i < arr.length; i++) {
int key = arr[i]; // 현재 비교할 값
int j = i - 1;
// 정렬된 부분에서 key보다 큰 값들을 한 칸씩 뒤로 이동
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j]; // 값 이동
j = j - 1; // 이전 위치로 이동
}
// key 값을 적절한 위치에 삽입
arr[j + 1] = key;
}
}
}
'JAVA > 코드' 카테고리의 다른 글
15일차 과제 - UPDOWN게임 (0) | 2025.02.06 |
---|---|
JAVA의 메소드 유형 (0) | 2025.02.02 |
강의 4일차 문제 풀기 (0) | 2025.01.30 |
강의 3일차 문제풀기- 반복문 (0) | 2025.01.30 |
강의 2일차 문제풀기 - 반복문 (0) | 2025.01.30 |