반응형

분류 전체보기 2934

[C언어 알고리즘] 2.6 쉘 정렬(Shell Sort) 알고리즘

[C언어 알고리즘] 2.6 쉘 정렬(Shell Sort) 알고리즘이번에는 반복 알고리즘 중에 쉘 정렬 알고리즘을 알아봅시다. 쉘 정렬 알고리즘은 삽입 정렬 알고리즘을 이용하는 정렬 방식입니다. 쉘 정렬은 같은 간격에 있는 원소들을 삽입 정렬 원리로 정렬하는 것을 반복합니다. 이 때 간격의 초기값은 배열의 크기/2이며 간격이 1일 때까지 1/2로 줄이면서 반복합니다. 쉘 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(step:=size/2; step>0 ; step:=step/2) 반복(i:=0; i

[C언어 알고리즘] 2.5.3 삽입 정렬 알고리즘 소스 코드

[C언어 알고리즘] 2.5.3 삽입 정렬 알고리즘 소스 코드//삽입 정렬(Insertion Sort) #include #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 void InsertionSort(int *base, int n); int main(void) { int arr[10] = { 9,4,3,10,5,8,7,6,2,1 }; InsertionSort(arr, 10); return 0; } void ViewArr(int *arr, int n); void InsertionSort(int *base, int n) { int i, j; ViewArr(base, n);//현재 상태 출력 for (i = 1; i0; j--) { if (base[j - 1]>..

[C언어 알고리즘] 2.5.2 삽입 정렬 알고리즘 구현

[C언어 알고리즘] 2.5.2 삽입 정렬 알고리즘 구현 삽입 정렬 알고리즘을 구현합시다. 삽입 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(i:=1; i0 ; j:=j-1) 조건(compare (base [j-1], base [j]) < 0) temp: = base [j-1] base[j-1] = base [j] base[j] = temp 아니면 루프 탈출 //삽입 정렬(Insertion Sort) #include 먼저 두 개의 값을 교환하는 매크로 함수를 작성합니다. #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 이 책에서는 정수 형식 배열을 정렬하는 함수를 만들기로 할게요. 원소 형식에 관계없이 정렬하는 방법은 디딤돌 정렬 ..

[C언어 알고리즘] 2.5.1 삽입 정렬 알고리즘 성능 분석

[C언어 알고리즘] 2.5.1 삽입 정렬 알고리즘 성능 분석 삽입 정렬 알고리즘 성능을 분석합시다. 삽입 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(i:=1; i0 ; j:=j-1) 조건(compare (base [j-1], base [j]) < 0) temp: = base [j-1] base[j-1] = base [j] base[j] = temp 아니면 루프 탈출 n 개의 원소인 배열을 정렬할 때 비교에 걸리는 수행 시간을 T'(n)이라고 합시다. 삽입 정렬의 내부 반복문에서 비교에 걸리는 시간을 S(n)이라고 하면 S(n) = n-1입니다. T'(n)은 다음과 같습니다. T'(n) = S(2) + S(3) + ... + S(n) = 1 + 2 + 3 + ... +(n-1)..

[C언어 알고리즘] 2.5 삽입 정렬(Insertion Sort) 알고리즘

[C언어 알고리즘] 2.5 삽입 정렬(Insertion Sort) 알고리즘이번에는 반복 알고리즘 중에 삽입 정렬 알고리즘을 알아봅시다. 삽입 정렬 알고리즘은 점진적으로 정렬 범위를 넓혀 나가는 방식으로 정렬하는 알고리즘입니다. 이를 위해 새로운 범위에 포함하는 마지막 원소를 앞으로 이동하면서 자신보다 작은 요소를 찾을 때까지 이동하면서 자리를 교환합니다. 삽입 정렬(base:컬렉션, n:원소 개수, compare:비교 논리) 반복(i:=1; i0 ; j:=j-1) 조건(compare (base [j-1], base [j]) < 0) temp: = base [j-1] base[j-1] = base [j] base[j] = temp 아니면 루프 탈출 예: 정렬 전: 10 9 2 11 19 1.1회전: 9 1..

[C언어 알고리즘] 2.4.3 선택 정렬 알고리즘 소스 코드

[C언어 알고리즘] 2.4.3 선택 정렬 알고리즘 소스 코드//선택 정렬(Selection Sort) #include #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 void SelectionSort(int *base, int n); int main(void) { int arr[10] = { 9,4,3,10,5,8,7,6,2,1 }; SelectionSort(arr, 10); return 0; } void ViewArr(int *arr, int n); void SelectionSort(int *base, int n) { int i, j; int maxi; ViewArr(base, n);//현재 상태 출력 for (i = n; i>1; i--)//정렬할 범위..

[C언어 알고리즘] 2.4.2 선택 정렬 알고리즘 구현

[C언어 알고리즘] 2.4.2 선택 정렬 알고리즘 구현이번에는 선택 정렬 알고리즘을 구현해 보아요. 선택 정렬(base:컬렉션,n:원소 개수,compare:비교 논리) 반복(i:=n; i>1 ; i:= i-1) 반복(max=0,j:=1; j1; i--)//정렬할 범위를 축소해 나갑니다. { 선택 정렬의 내부 반복문은 인덱스 0에서 마지막 원소 중에 제일 큰 값을 찾아 맨 마지막 원소와 교환하는 작업을 수행합니다. maxi = 0; for (j = 1; j

[C언어 알고리즘] 2.4 선택 정렬(Selection Sort) 알고리즘

[C언어 알고리즘] 2.4 선택 정렬(Selection Sort) 알고리즘 이번에는 반복 알고리즘일 이용하는 선택 정렬 알고리즘을 알아봅시다. 선택 정렬 알고리즘은 제일 큰 값을 찾아 맨 뒤의 요소와 교체하는 방법을 반복하여 전체를 정렬하는 알고리즘입니다. 물론 제일 작은 값을 찾아 맨 앞의 요소와 교체하는 방법을 반복할 수도 있습니다. 선택 정렬 알고리즘을 의사코드(pseudo code: 논리적인 수행 흐름을 이해할 수 있게 작성한 코드)는 다음과 같습니다. 선택 정렬(base:컬렉션,n:원소 개수,compare:비교 논리) 반복(i:=n; i>1 ; i:= i-1) 반복(max=0,j:=1; j

[C언어 알고리즘] 2.3.3 버블 정렬 알고리즘 소스 코드

[C언어 알고리즘] 2.3.3 버블 정렬 알고리즘 소스 코드//버블 정렬(Bubble Sort) #include #define SWAP(a,b) {int t; t = a; a=b; b=t;}//a와 b를 교환 void BubbleSort(int *base, int n); int main(void) { int arr[10] = { 9,4,3,10,5,8,7,6,2,1 }; BubbleSort(arr, 10); return 0; } void ViewArr(int *arr, int n); void BubbleSort(int *base, int n) { int i, j; ViewArr(base, n);//현재 상태 출력 for (i = n; i>1; i--)//정렬할 범위를 축소해 나갑니다. { for (j =..

반응형