🎯 목표 : 완전 탐색 알고리즘의 작동 원리를 이해하고 구현 할 수 있다.
arr = new int[]{5,2,7,3,8,9,4};
n = 9
public boolean SequentialSearch(int[] arr, int n) {
boolean result = false;
for(int i=0; i<arr.length; i++){
if(arr[i] == n){
result = true;
}
}
return result;
}
public int bfMatching(String text, String pattern){
int textIndex = 0;
int patternIndex = 0;
while (textIndex!=text.length()&& patternIndex!=pattern.length()){
// 같은 문자를 발견했을때 text와 pattern의 인덱스 값을 증가 시키며 다시 탐색
if(text.charAt(textIndex)==pattern.charAt(patternIndex)){
textIndex++;
patternIndex++;
} else {
// 같은 문자가 없다면 textIndex의 값은 1씩 증가하게 되고.
// 같은 문자열을 찾았을때, pattern의 마지막 문자와 같은 text의 인덱스에서 탐색을 끝낸 상태라면.
// pattern의 첫번째 문자가 포함된 text의 인덱스를 textIndex에 삽입.
textIndex = textIndex - patternIndex + 1;
patternIndex = 0;
}
}
// 같은 문자열을 찾았을때 첫 문자 인덱스값을 반환
if(patternIndex == pattern.length()) return textIndex-patternIndex;
// 그렇지 않은 경우 -1 반환
else return -1;
}
public int[] SelectionSort(int[] arr) {
// 요소를 가지고 전체 배열을 순회하며 최소값을 찾아 교환한다.
for (int from = 0; from < arr.length - 1; from++) {
// 요소중 최소값의 인덱스를 가질 변수 min
int min = from;
for (int j = from + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;
}
}
// from 인덱스 값을 가진 요소를 최소값과 교환한다.
swap(arr,from,min);
}
return arr;
}
private void swap(int[] arr, int from, int min){
int temp = arr[from];
arr[from] = arr[min];
arr[min] = temp;
}
public void bubbleSort(int[] arr){
int n = arr.length;
for (int i=0; i<n-1; i++){
// 더이상 정렬할 요소가 있는지 없는지 확인 count
int count =0;
// 배열의 끝부터 인덱스 i 까지 탐색하며 요소 교환
for(int t=n-1; t>i; t--){
if(arr[t-1]>arr[t]) {
swap(arr,t-1,t);
count++;
}
}
// 더이상 탐색해서 교환하는 요소가 없다면 break
if(count == 0) break;
}
}
private void swap(int[] arr, int idx, int idx2){
int temp = arr[idx];
arr[idx] = arr[idx2];
arr[idx2] = temp;
}