본문 바로가기

전체 글54

퀵정렬 (QuickSort) 피봇을 정하여 해당 피봇보다 작은 값을 왼쪽에서부터 찾기 시작.큰 값을 오른쪽에서부터 찾기 시작.양쪽에서 진행 중 찾아지는 값들을 서로 위치 변경.반복 중에 양쪽에서 비교하던 인덱스가 만나면 그 위치와 피봇 값을 교환. 이 과정에서 중간지점으로 이동된 피봇을 중심으로 양쪽에 부분집합이 생긴다.각 부분집합마다 피봇을 다시 정하여 위의 과정을 반복한다. 자료가 균일하게 분포되어 있으면 log2(n)의 연산 횟수가 필요하다.매번 정렬시마다 n만큼 비교하므로 O(nlog(n))의 평균 효율을 보인다.데이터 이동 연산은 비교보다 적게 발생한다. 데이터가 불균형하게 분포되어 있으면 최악의 경우 n(2)의 효율성을 지닌다. 기존 피봇을 재사용하지 않고, 먼 곳에 있는 값을 교환하므로 효율이 우수하다.최악의 경우 효율.. 2018. 12. 19.
선택정렬 (Selection Sort) 키 값을 선택하여 값을 이동한다. 오름차순으로 정렬시 제일 먼저 제일 작은 값이 와야하므로 데이터 내에서 가장 작은 키 값을 선택하여 제일 앞으로 보낸다.나머지 데이터에서 가장 작은 값을 찾아서 이미 정렬된 키 값 다음 위치로 보낸다.반복하여 제일 마지막 키 값이 남을 때까지 작은 키 값을 찾아 이미 정렬된 키 값 다음 위치로 보내는 동작을 반복한다.마지막 키 값은 정렬되지 않아도 위치가 확정이므로 정렬이 끝난다. 비교 연산 : 두 개의 루프. 1. n개 만큼 비교 시작. 2. n-1개와 비교. 즉 비교에 n(2) 만큼의 효율.이동 연산 : 두 값의 위치 변경. temp 변수 포함 3번의 이동 연산. 즉 이동에 3n = n 만큼의 효율. 최종 n(2)+n 이므로 O(n(2))의 효율을 지닌다. 상대적으로.. 2018. 12. 19.
알고리즘 (algorithm) 알고리즘은 시간 복잡도와 공간 복잡도로 나눔.공간 복잡도는 필요한 하드디스크 기준이므로 현대에는 크게 신경쓰지 않음.시간 복잡도는 입력 값에 따른 연산 횟수를 표현하므로 시간 복잡도 함수의 최고 차항 만으로 성능을 표현. (최고 차항을 제외한 다른 값들은 비율상 미비함으로)빅오 표기법은 시간 복잡도 함수의 상한을 표현. (최소한 빅오 성능 이상을 보장) 오름차순 정렬 : 작은 키 값부터 올라간다.내림차순 정렬 : 큰 키 값부터 내려온다. 정렬은 비교 - 이동 과정을 거친다.비교 연산 성능이 같더라도 비교 후 이동해야 하는 자료의 크기가 크다면 이동이 적은 정렬이 성능이 좋다.자료가 저장된 상태에 따라 평균 효율성과 최악 효율성에 차이가 있다면 이 또한 알고리즘 선택의 기준이 된다. 한번의 정렬시 기존 자.. 2018. 12. 19.
MSSQL 계정 로그인 잠김 풀기. Login failed for user 'id' because the account is currently locked out, The system administrator can unlock it. 이라는 문구와 함께 계정이 잠겨버리는 현상이 발생한다. 이때는 select LOGINPROPERTY ( name , 'IsLocked' ) ,* from sys.server_principals where type = 'S' 쿼리를 실행해보면 계정들의 상태를 확인할 수 있다. 잠겨있는 계정이 있으면 ALTER LOGIN 계정명 WITH PASSWORD = ‘계정 비밀번호’ UNLOCK 쿼리를 날려서 잠금을 풀어준다. 2016. 9. 6.