donaricano-btn

이진검색 - 루프사용(Binary Searching using loop)

- 가운데 요소들을 기준으로 양쪽으로 나누어 검색한다

- 찾는 요소와 가운데 요소의 크고 작음에 따라 방향이 결정된다

- 분할과 정복 기술 사용

- 빠르면 O(1) 최악이면 O(logn)의 성능을 갖는다

- 그러나 기존에 배열을 정렬 시킨 후 사용해야 한다


1. 구현

- 중요한 점은 start와 end 부분을 설정 할때 +1, -1 을 함으로써 배열의 크기와 상관없이 검색 할 수 있도록 설정


블로그 이미지

리딩리드

,
donaricano-btn

단순 연속 검색 혹은 일직선 검색(Linear Searching, Sequential Searching)

- 배열안의 요소를 찾기위해 처음부터 하나씩 체크 한다

- 만약 요소가 없는 경우 최악의 성능을 제공한다. (배열을 처음부터 다 돌아야함)


1. 구현


- 실행 결과로 key에 해당하는 index 값을 반환한다


2. 결론

- 권장하지 않는다

블로그 이미지

리딩리드

,
donaricano-btn

퀵 정렬  - Quick Sorting

- 다른 정렬 알고리즘에 비해 빠르다

- 분할, 정렬 알고리즘 사용(divide and conquer)

- pivot 이라는 요소를 지정하고 나누어 각각 리스트를 비교한 후 합친다

- 재귀함수 호출 사용

- 다른 알고리즘에 비해 복잡하게 느껴진다(me too...)


1. QuickSorting.class

1) 초기화


- 배열, 배열 크기를 정의


2) sort()

 

- 생성자 함수와 같이 값을 초기화 한다

- 퀵 정렬 호출


3) quickSort()

 


4) exchange(), print()

 

- 값 교환하는 부분과 상태를 표시


5) main()

 

블로그 이미지

리딩리드

,
donaricano-btn

인서트정렬 - Insertion sorting

- 작은 양에 데이터를 비교할 때 적합하다

- 간결하고 효율적이다


1. InsertionSorting.class

1) insert(int[] arry)


- 배열의 크기 -1만큼 회전한다

- 한번 회전 할때 마다 처음 회전 횟수를 기준으로 비교

(i = 1 이면 한번 비교, i = 2 요소 값 3개 두번 비교 i =3 이면 요소값 네개 세번 비교....)

- 버블 정렬과 비슷해보이지만 버블 정렬은 1회전에 모든 값을 돌면서 비교 하지만 인서트는 회전 할 때마다 비교값이 제한 되어있다


2) swap(int[] arry,  int j), print(int[] arry)

 

- 값의 위치를 변경 해주는 함수와 상태 값 출력


3) main()    

 



블로그 이미지

리딩리드

,