Untitled
Fold the Video
경우 등
10개의 데이터가 있다고 가정
정렬한 결과를 어떻게 구할수 있을까요?
정렬방법을
이용해서 정확히 명시해 주지 않으면
때는 정확히 어떠한 방식으로
선택정렬 알고리즘
가장 작은 데이터를 골라서 제일 앞쪽으로
동작 예시에 대해서
자 그럼 이렇게 0과 7의 위치가 서로 바뀐걸 확인할 수 있구요 첫 번째 원소 까지는 정렬이 수행된걸 확인할 수 있습니다.
데이터를 골라주는데요
이 5와 이렇게 1과 5가 위치가
바뀐걸 확인할 수 있습니다
서 가장 작은 데이터인 2를 골라서 앞에 9와 위치를 바꿔 줄수 있도록합니다
이 3을 찾아서
동작 과정을
매번 가장 작은 원소를
찾아야 하기 때문에
선택정렬을 구현 할 수 있습니다
정리
매번 탐색범위에서 가장 작은값을 맨앞으로 그다음 가장 작은 값을 제외한 나머지 범위에서 다시 작은걸 맨앞으로 반복할때마다 탐색 범위는 줄어듬 선형 탐색하는 것과 동일 이중 반복문을 통해 만들수 있음
있는걸 확인 할 수 있구요
겁니다
-1까지 차례대로 증가하며 이제 선형 탐색을 수행해서 가장 작은
원소를 찾는 겁니다 자 그래서 현재
min 인덱스 값으로
수행이 끝났을때
이 min 인덱스에 담기게 될겁니다 자 그래서 가장 앞쪽 원소와 가장 작은 원소를
서로 바꿔 줄수 있도록 하는 겁니다
이 스왑 연산을
표현할수 있습니다
이처럼 단순하게 한줄을 이용해서 바로 스와핑 (파이썬의 장점)
수행된 결과라고 볼수 있습니다
이어서
담기도록 해서 가장 작은 원소의 위치를 찾은 뒤에 가장 앞쪽에 있는 원소와 가장 작은
원소의 그 위치 값을 서로 바꿔 줄수 있도록 하는 것입니다
0123456789가 출력됩니다
이어서 자바 코드까지 확인해보겠습니다
이민 인덱스를 이용해서
찾도록해서
확인할수 있습니다
잠시 하나의 값을 기록해 놓는 방법을 이용해서 이렇게 두원소의 위치값을 바꿔줄수 있습니다
수행된 결과까지
정렬이 수행된 결과가 성공적으로
이와같이 (위에 보이는 식) 이런식으로 가서
정렬을 수행해 주지 않아도
연산횟수가 구성되는걸 확인할수 있습니다 그래서 이는
같이 표현할수 있는데요
빅오 표기법에 따라서 나타내어 지면
이 개수의 해당하는 끝에 /2 (2분의 1은 ) 그냥 생략되고
O의 n제곱이라고 표현 할수 있습니다
Last Updated:
Summarize & share videos seamlessly
Loading...