[자료구조] 쉘 정렬(Shell Sort)란 무엇인가 ?
·
컴퓨터 과학/자료구조
1. 쉘 정렬(Shell Sort)의 의미 : 삽입 정렬의 단점을 보완한 정렬. h라는 간격을 설정하여 각 원소들을 그룹화하고 그룹화한 원소들끼리 비교하며 정렬하는 알고리즘 h라는 간격의 크기 선정에 따라 쉘 정렬의 성능이 결정된다. 2. 쉘 정렬의 의사코드(Pseudocode) 입력 : 크기가 n인 배열 A 출력 : 정렬된 배열 A for each gap h = [ h0 > h1 > ... > hk = 1] //큰 간격부터 순서대로 h 설정 for i = h to n-1 CurrentElement = A[i] j = i while(j >= h) and(A[j-h] > CurrentElement){ A[j] = A[j-h] j = j-h } A[j] = CurrentElement } return 배열A ..
[자료구조] 삽입정렬(Insertion Sort)란 무엇인가 ?
·
컴퓨터 과학/자료구조
1. 삽입정렬(Insertion Sort)의 의미 : 배열을 정렬된 부분(앞부분)과 정렬이 안 된 부분(뒷부분)으로 나누고, 정렬이 안 된 부분의 가장 왼쪽 원소를 정렬된 부분의 적절한 위치에 삽입하여 정렬하는 알고리즘 정렬하기전 초기의 정렬된 부분은 배열의 첫 번째 원소로 가정한다. 2. 삽입정렬의 의사코드(Pseudocode) 입력 : 크기가 n인 배열A 출력 : 정렬된 배열 A 1 for i = 1 to n-1 { 2 CurrentElement = A[i] // 배열의 정렬되지 않은 부분의 가장 왼쪽 원소 3 j ← (i-1) // 정렬된 부분에 들어갈 적절한 위치 탐색 4 while(j >= 0) and (A[j] > CurrentElement) { 5 A[j+1] = A[j] // 정렬된 부분의..
[자료구조] 선택정렬(Selection Sort)란 무엇인가 ?
·
컴퓨터 과학/자료구조
1. 선택정렬(Selection Sort)의 정의 : 배열의 원소중 최솟값을 선택하여 배열의 정렬되지 않는 부분의 첫 인덱스와 교환하여 정렬하는 알고리즘이다. 2. 선택정렬의 의사코드(Pseudocode) 입력 : 크기가 n인 배열 A 출력 : 정렬된 배열 A 1 for i = 0 to n-2 { 2 min = i // 배열의 정렬되지 않은 부분의 첫 인덱스 3 for j = i+1 to n-1 { // A[i+1] ~ A[n-1]에서 최솟값을 찾는다 4 if(A[j] < A[min]) 5 min = j // 작은 원소를 가진 배열의 인덱스를 min에 저장 6 } 7 A[i] ↔ A[min] // 배열의 정렬되지 않은 부분의 첫 인덱스의 원소와 최솟값 교환 8 } 9 return 배열 A !!) 위에서 ..
[자료구조] 버블정렬(Bubble Sort)이란 무엇인가 ?
·
컴퓨터 과학/자료구조
1. 버블정렬(Bubble Sort)의 정의 : 이웃하는 숫자를 비교하여 작은 수를 앞쪽으로 이동시키는 과정을 반복하여 정렬하는 알고리즘이다. 전체적으로 1번 처리를 한 경우 1pass라고 칭한다. 2. 버블정렬의 의사코드(Pseudocode) 입력 : 크기가 n인 배열 A 출력 : 정렬된 배열 A 1 for pass = 1 to n-1 2 for i = 1 to n-pass 3 if(A[i-1] > A[i]) // 왼쪽 원소가 오른쪽 원소보다 크면 4 A[i-1] ↔ A[i] // 서로 자리를 바꾼다 5 return 배열 A 3. 버블정렬의 시간복잡도(Time Complexity) 최선, 평균, 최악의 경우 : 특정한 조건을 추가하지 않는다면, 최선, 평균, 최악의 경우일 때의 버블정렬의 시간 복잡도는..